驱动的常用方法
| driver方法 | 作用 |
| .name | 检查驱动是基于什么浏览器(假设为.Firefox(),返回值则为firefox) |
| .get(网址) | 已get方法打开指定网址 |
| .title | 返回当前页面标题 |
| .current_url | 当前url |
| .page_source | 获取当前页面的源(重要方法) |
| .back() | 在浏览器的历史记录中后腿一步。 |
| .forward() | 在浏览器历史记录中向前迈进了一步。 |
| .refresh() | 刷新页面 |
| .implicitly_wait(时间) | 隐式等待(下方有此方法详细使用说明) |
| .set_script_timeout(时间) | 异步加载页面时等待的时间 |
| .set_page_load_timeout(时间) | 设置等待页面加载的时间,超出后报错(在get前使用) |
| .desired_capabilities | 返回当前驱动的信息 |
对浏览器的操作
| 使用方法 | 作用 |
| .current_window_handle | 返回当前窗口的句柄(系统会给每个窗口分配一个句柄,可以根据句柄移动窗口、改变窗口大小、把窗口最小化等等。) |
| .window_handles | 返回所以窗口的句柄 |
| .maximize_window() | 最大化窗口 |
| .minimize_window() | 最小化窗口 |
| .fullscreen_window() | 将窗口全屏 |
| .set_window_size(宽,高) | 指定窗口的大小 |
| .get_window_size() | 获取窗口的大小 |
| ,set_window_position(x,y) | 设置窗口的位置 |
| .get_window_position() | 获取窗口的位置 |
| .set_window_rect(x,y,宽,高) | 设置状况的位置以及大小 |
| .get_window_rect() | 获取当前窗口的位置以及大小 |
| .close() | 关闭窗口 |
| .quit() | 退出驱动程序并关闭窗口 |
| .switch_to | 用于切换焦点(多窗口切换与切换到页面中内置页面frame元素中使用) |
查找元素
| 常用查找方法 | 作用 |
| .find_element_by_id(id名) | 按id查找元素。(找到第一个符号要求的元素后立即返回) |
| .find_elements_by_id(id名) | 按id查找多个元素。(找到多个符合要求的元素后合并成列表返回) |
| .find_element_by_class_name(class名) | 按class名查找元素。(同样拥有查找多个元素的elements方法) |
| .find_element_by_xpath(xpath规则) | 按xpath规则查找元素。(同样拥有查找多个元素的elements方法) |
| .find_element_by_link_text(文本) | 根据标签中的文本查找元素,必须要全文匹配,比如<p>全文匹配</p>时文本必须为’全文匹配’(同样拥有查找多个元素的elements方法) |
| .find_element_by_partial_link_text(文本) | 根据标签中的文本查找元素,部分匹配即可,比如<p>全文匹配</p>时文本可以为’匹配’(同样拥有查找多个元素的elements方法) |
| .find_element_by_name(name名) | 按名称查找元素。(同样拥有查找多个元素的elements方法) |
| .find_element_by_tag_name(HTML标签) | 按HTML标签查找元素。(同样拥有查找多个元素的elements方法) |
| .find_element_by_css_selector(css选择器) | 根据css选择器查找元素。(同样拥有查找多个元素的elements方法) |
| .find_element(策略器 ,’元素’) | 策略器包含By.ID,By.TAG_NAME,By.CLASS_NAME,By.NAME(同样拥有查找多个元素的elements方法) 策略器需要导入from selenium.webdriver.common.by import By |
行为链(模拟鼠标与键盘)
模拟鼠标的单击,双击,右击,悬浮等操作。需要引入from selenium.webdriver.common.action_chains import ActionChains 。创建行为链需要先实例化一个鼠标ActionChains(WebDriver实例)比如mouse = ActionChains(self.driver)
| 行为链模拟鼠标方法 | 作用 |
| .perform() | 执行操作(行为链是一系列操作,最后需要使用此方法让其他方法开始执行,类似数据库事务的提交操作) |
| .reset_actions() | 清除操作(相当于数据库中事务的回滚) |
| .click(点击对象) | 点击左键 |
| .click_and_hold(点击对象) | 按住左键(与点击不同,这是按住不松) |
| .context_click(点击对象) | 点击右键 |
| .double_click(点击对象) | 双击鼠标左键 |
| .drag_and_drop(下移对象, 上移对象) | 将指定元素上下移动 |
| .drag_and_drop_by_offset(点击对象, x, y) | 点击指定对象后拖动至指定xy区域 |
| .move_by_offset(x, y) | 移动鼠标到坐标xy |
| .move_to_element(指定对象) | 将鼠标移动到指定对象上并开始悬停 |
| .move_to_element_with_offset(指定对象, x, y) | 将鼠标移动到指定对象后并偏移xy。 |
| .release(指定对象) | 在指定对象上放开鼠标,不指定对象则为当前位置放开鼠标 |
| 行为链模拟键盘方法 | 作用 |
| .key_down(按键, 发送对象) | 按下键盘按键,但不释放键盘(需要同时按住多键时使用),每次只能传入一个按键,如果没有发送对象,则想当前焦点发送 |
| .send_keys(按键) | 选择按键 |
| .key_up(按键, 发送对象) | 放开按键,如果没有发送对象,则想当前焦点发送 |
| send_keys_to_element(发送对象, 按键) | 点击键盘 |
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
# 假设需要按ctrl+c
driver = webdriver.Firefox()
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
保存网页快照
| 使用方法 | 作用 |
| .get_screenshot_as_file(文件路径.png) | 要将屏幕快照保存到指定路径.save_screenshot(文件路径.png)方法作用相同 |
| .get_screenshot_as_png() | 获取屏幕快照的二进制并作为返回值返回 |
| .get_screenshot_as_base64() | 获取屏幕快照的base64编码字符串并作为返回值返回,在HTML中的嵌入图像中非常有用。 |
对cookie的操作
| 使用方法 | 作用 |
| .get_cookies() | 用字典的方式返回获取的cookies |
| .get_cookie(cookie名) | 按cookie寻找cookie |
| .delete_cookie(名称) | 删除指定名称的cookie |
| .delete_all_cookies() | 删除全部cookie |
| .add_cookie(cookie) | 将cookie添加到当前网页 |