为了方便平时查阅,整理笔记如下:
1、元素定位方法归纳
序号 方法 说明
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
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。
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表示复数。运用场景:
批量操作元素,如勾选页面所有复选框。
先获取一组元素,再从这组对象中过滤出需要操作的元素。
2、操作页面各种元素的方法和属性(driver = webdriver.Chrome())
序号 方法 说明
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_windows_handle
获得当前窗口的句柄。
driver.current_windows_handle
29 windows_handles
返回所有的窗口的句柄到当前会话。
driver.windows_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()
TypeError: 'Alert' object is not callable
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)
---------------------
作者:小小小羊羊羊
来源:优快云
原文:https://blog.youkuaiyun.com/young_gril/article/details/82768321
版权声明:本文为博主原创文章,转载请附上博文链接!