操控元素的基本方法
Selenium本质是模拟人对浏览器进行输入、选择、点击等操作,因此对于目标标签的定位非常重要。
定位一个元素 | 定位多个元素 | 含义 | find_element_by_name | find_elements_by_name | 通过元素name定位 | find_element_by_id | find_elements_by_id | 通过元素id定位 | find_element_by_xpath | find_elements_by_xpath | 通过xpath表达式定位 | find_element_by_link_text | find_elements_by_link_text | 通过完整超链接定位 | find_element_by_partial_link_text | find_elements_by_partial_link_text | 通过部分链接定位 | find_element_by_tag_name | find_elements_by_tag_name | 通过标签定位 | find_element_by_class_name | find_elements_by_class_name | 通过类名进行定位 | find_element_by_css_selector | find_elements_by_css_selector | 通过css选择器定位 |
在找到目标标签之后,最重要的是对这些标签进行模拟操作。Selenium库下WebDriver模块常用方法主要分为两类:一类是模拟浏览器、键盘操作;另一类是模拟鼠标操作。
自动操作鼠标键盘
模拟器、键盘操作的方法归纳如下。
方法 | 说明 | set-window-size() | 设置浏览器的大小 | back() | 控制浏览器后退 | forward() | 控制浏览器前进 | refresh() | 刷新当前页面 | clear() | 清除文本 | send_keys() | 模拟按键输入 | click() | 单击元素 | submit() | 用于提交表单 | get_attribute() | 获取元素属性值 | is_displayed() | 设置该元素是否用户可见 | size | 返回元素的尺寸 | text | 获取元素的文本 |
自动化交互——鼠标动作链
在页面上模拟一些鼠标操作,比如双击、右击、拖拽甚至按住不动等,可以通过导入ActionChains类实现。
ActionChains执行原理:当调用ActionChains的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当调用perform()方法时,队列中的时间会依次执行。
方法 | 说明 | ActionChains(driver) | 构造ActionChains对象 | context_click() | 模拟鼠标右键操作,在调用时需要指定元素定位 | double_click() | 双击 | drag_and_drop(source,target) | 拖拽 | move_to_element(to_element) | 鼠标移动到某个元素(悬停) | perform() | 提交动作,执行链中的所有动作 |
模拟百度自动化搜索
from selenium import webdriver import time
driver = webdriver.Edge() driver.maximize_window()#最大化窗口 driver.get('http://www.baidu.com') element_keyword = driver.find_element_by_id('kw') element_keyword.send_keys('Selenium') element_search_button = driver.find_element_by_id('su') element_search_button.click() time.sleep(10) driver.close() driver.quit()
附:selenium.获取浏览器大小、设置浏览器位置、最大化浏览器
get_window_size() 获取浏览器大小
set_window_size() 设置浏览器位置
get_window_position() 获取浏览器在屏幕上的坐标
set_window_position() 设置浏览器在屏幕的位置
maximize_window()? ? ? 最大化浏览器
|