为了方便平时查阅,整理笔记如下:
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.csdn.net/young_gril/article/details/82768321 版权声明:本文为博主原创文章,转载请附上博文链接!