为了方便平时查阅,整理笔记如下:
序号 | 方法 | 说明 | |
---|---|---|---|
1 | id | find_element_by_id() | HTML规定id属性再HTML文档中必须是唯一的,因此可以使用id定位。但是id可能存在动态id,这个时候就不能使用id定位。 |
2 | name | find_element_by_name() | 根据HTML中的name属性值定位 |
3 | class | find_element_by_class() | 根据HTML中的class属性值定位 |
4 | tag | find_element_by_tag() | 通过元素的tag name来定位元素,如div、input等等。很难单个元素定位,因为一个HTML含有多个相关的tag name,可以用来定位一组标签元素。 |
5 | link | find_element_by_link_text() | 定位文本链接。通过元素标签对之间的文本信息来定位元素。 |
6 | partial link | find_element_by_partial_link_text() | partial link定位是对link的补充,用来定位文本较长的链接元素定位。 |
7 | XPath | find_element_by_xpath() | XPath是一种在XML文档中定位元素的语言。但是HTML可以看作XML的一种实现。因此可以使用该方法定位web应用元素。 ①绝对路径定位:如,/html/body/div/div[2]/from/span/input。用标签名的层级关系定位元素绝对路径。其中div[2]表示当前层级下的第二个div标签。 ②元素属性定位:如,//input[@id='idname'])。其中//表示当前页面,input表示定位元素的标签名,[@id='idname']表示这个元素的id属性值等于id。 ③层级与属性结合:如,//span[@class='bg']/input。当元素本身没有可以唯一标识该元素的属性值,可以查找它的上一级,如果上一级元素有唯一标识,可使用该方法。 ④逻辑运算符:如,//input[@id='id' and @class='bg']/span/input ⑤模糊查找://h4[contains(text(),'视图')]。h4标签下包含视图两个字的元素。 ⑥匹配查找://span[text()='新增']。span标签为新增的元素。完全匹配。当存在空格或者回车时,使用normalize-space()方法,//span[normalize-space(text())='新增'] |
8 | css | find_element_by_css_selector() | ①class定位:find_element_by_css_selector(“.bg”)。点号(.)表示通过class属性定位元素。 ②id定位:find_element_by_css_selector(“#idname”)。#号表示通过id属性定位元素。 ③父子关系定位:find_element_by_css_selector("span>input")。查找span(父亲元素)的所有标签叫input的子元素。 ④属性定位:find_element_by_css_selector("[name='kw']"), find_element_by_css_selector("[type='submit']")。使用元素的任意属性,只要可以唯一标识该元素。 ⑤组合定位:find_element_by_css_selector("form#fm>span>input#kw")。要定位的元素标签名为input,该元素的id属性值kw;它有父元素span,它的父元素还有父元素为form,而且id属性为fm。 ⑥定位一个标签下多个相同元素: .fui-select-group__wrap li:nth-child(1)>span 表示:class下的第一个li标签下的span元素 |
9 | By | find_element(By.ID,"kw") find_element(By.NAME,"wd") find_element(By.CLASS_NAME,"bg") find_element(By.TAG_NAME,"input") find_element(By.LINK_TEXT,"新闻") find_element(By.XPATH,"//*[@id='idname']") find_element(By.CSS_SELECTOR,"span>input#su") | find_element()方法只用于定位元素,需要两个参数,第一个参数是定位的类型,由By提供,第二个参数是定位的具体方式。在使用By之前需要导入By类。 from selenium.webdriver.common.by import By 推荐使用上面的find_element_by_XX()方法。 |
10 | 组元素定位 | find_elements_by_id() ....... find_elements_by_css_selector() | 定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多一个s表示复数。运用场景:
|
序号 | 方法 | 说明 |
1 | set_windows_size() | 设置浏览器尺寸。 driver.set_windows_size(480,800),设置浏览器宽480,高800显示。 |
2 | maximize_size() | 浏览器全屏显示。不需要参数。 driver.maximize_size() |
3 | back() | 模拟后退按钮。 driver.back() 返回页面。 |
4 | forward() | 模拟前进按钮。 driver.forward() 前进页面。 |
5 | refresh() | 刷新页面。 driver.refresh() 刷新当前页面。 |
6 | clear() | 清除文本。 driver.find_element_by_id("idInput").clear() 清除输入框信息。 |
7 | send_keys() | 模拟按键输入。 driver.find_element_by_id("idInput").send_keys(“username”) 输入框中输入用户名。 |
8 | click() | 单击元素。 driver.find_element_by_id("loginBtn").click() 点击登录按钮。 |
9 | submit() | 提交表单。该方法与click()类似,有时候可以互换使用,但是使用范围没有click()广。 driver.find_element_by_id("idInput").send_keys(“username”) driver.find_element_by_id("idInput").submit() 提交输入框内容 |
10 | size | 返回元素尺寸。 driver.find_element_by_id("idInput").size 获得输入框尺寸 |
11 | text | 获取元素的文本。 driver.find_element_by_id("idInput").text 获取元素文本 |
12 | get_attribute(name) | 获取属性值。 driver.find_element_by_id("idInput").get_attribute(‘type’) 获取元素属性值。结果为text,文本属性。 |
13 | is_displayed() | 设置该元素是否用户可见。 driver.find_element_by_id("idInput").is_displayed() 返回元素是否可见。结果为True或者False。 |
14 | perform() | 执行所有ActionChains中存储的行为。使用鼠标操作的方法需要导入相关类。 from selenium.webdriver.common.action_chains import ActionChains |
15 | context_click() | 右击。 right_click = driver.find_element_by_id("xx") ActionChains(driver).context_click(right_click).perform() 执行右击操作 |
16 | double_click() | 双击。同上15使用方法。 |
17 | drag_and_drop() | 拖动。 drag_and_drop(source,target)在源元素上按住鼠标左键,然后移动到目标元素上释放。 source:鼠标拖动的源元素;target:鼠标释放的目标元素。 |
18 | move_to_element() | 鼠标悬停。同上15使用方法。 |
19 | title | 获取当前页面的标题。 driver.title() |
20 | current_url | 用户获得当前页面的URL. driver.current_url() |
21 | implicitly_wait() | 隐式等待。默认参数单位为秒。 driver.implicitly_wait(5) |
22 | sleep() | 休眠。 from time import sleep |
23 | path.abspath() | 获取当前路径下的文件。 需要导入python的os模块:import os os.path.abspath('文件名') |
24 | switch_to.frame() | 切换frame。元素定位时默认从当前frame查找,所以有时需要切换frame查找元素。 |
25 | switch_to.parent_content() | 跳出当前一级表单。默认对应离它最近的switch_to.frame()方法。 |
26 | switch_to.default_content() | 跳回最外层的页面。 |
27 | switch_to.window() | 实现在不同的窗口之间切换。 |
28 | current_window_handle | 获得当前窗口的句柄。 driver.current_window_handle |
29 | window_handles | 返回所有的窗口的句柄到当前会话。 driver.window_handles 使用方式:(获取新窗口的句柄,跳转到新窗口页面) |
30 | switch_to.alert() | 切换到alert弹窗。 driver.switch_to.aler() |
31 | accept() | 接受现有警告框,就是确认。 a = driver.switch_to.alert a.accept() 注:直接使用driver.switch_to.alert().accept()时,报错driver.switch_to.alert().accept() |
32 | dismiss() | 解散现有警告框,就是取消。 |
33 | get_cookies() | 获得所有cookie的信息 |
34 | get_cookie(name) | 返回字典的key为“name”的cookie信息 |
35 | add_cookie(cookie_dict) | 添加cookie。“cookie_dict”指字典对象,必须有name和value指 |
36 | delete_cookie(name,optionsString) | 删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域” |
37 | delete_all_cookies() | 删除所有cookie信息 |
38 | execute_script() | 通过借助JavaScript来控制浏览器的滚动条。 使用方法:滚动条拖动问题笔记 |
39 | windows.scrollTo() | 设置浏览器窗口滚动条的水平和垂直位置。 |
40 | currentSrc | 返回当前音频/视频的URL。 使用JavaScript测试: arguments[0].currentSrc |
41 | load() | 视频加载。 arguments[0].load() |
42 | play() | 视频播放. arguments[0].play() |
43 | pause() | 视频暂停. arguments[0].pause() |
44 | get_srceenshot_as_file() | 截取当前窗口。 driver.get_screenshot_as_file() |
45 | quit() | 退出相关的驱动程序和关闭所有窗口。 driver.quit() |
46 | close() | 关闭当前窗口。 driver.close() |
47 | basicConfig() | 开启debug模式可以捕捉客户端向服务器发送的POST请求数据。 import logging logging.basicConfig(level=logging.DEBUG) |