webdriver相关方法归纳

为了方便平时查阅,整理笔记如下:

1、元素定位方法归纳
序号方法说明
1idfind_element_by_id()HTML规定id属性再HTML文档中必须是唯一的,因此可以使用id定位。但是id可能存在动态id,这个时候就不能使用id定位。
2namefind_element_by_name()根据HTML中的name属性值定位
3classfind_element_by_class()根据HTML中的class属性值定位
4tagfind_element_by_tag()通过元素的tag name来定位元素,如div、input等等。很难单个元素定位,因为一个HTML含有多个相关的tag name,可以用来定位一组标签元素。
5linkfind_element_by_link_text()定位文本链接。通过元素标签对之间的文本信息来定位元素。
6partial linkfind_element_by_partial_link_text()partial link定位是对link的补充,用来定位文本较长的链接元素定位。
7XPathfind_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())='新增']

8cssfind_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元素

9By

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())
序号方法说明
1set_windows_size()

设置浏览器尺寸。

driver.set_windows_size(480,800),设置浏览器宽480,高800显示。

2maximize_size()

浏览器全屏显示。不需要参数。

driver.maximize_size()

3back()

模拟后退按钮。

driver.back()  返回页面。

4forward()

模拟前进按钮。

driver.forward() 前进页面。

5refresh()

刷新页面。

driver.refresh() 刷新当前页面。

6clear()

清除文本。

driver.find_element_by_id("idInput").clear() 清除输入框信息。

7send_keys()

模拟按键输入。

driver.find_element_by_id("idInput").send_keys(“username”)

输入框中输入用户名。

8click()

单击元素。

driver.find_element_by_id("loginBtn").click()  点击登录按钮。

9submit()

提交表单。该方法与click()类似,有时候可以互换使用,但是使用范围没有click()广。

driver.find_element_by_id("idInput").send_keys(“username”)

driver.find_element_by_id("idInput").submit()  提交输入框内容

10size

返回元素尺寸。

driver.find_element_by_id("idInput").size  获得输入框尺寸

11text

获取元素的文本。

driver.find_element_by_id("idInput").text  获取元素文本

12get_attribute(name)

获取属性值。

driver.find_element_by_id("idInput").get_attribute(‘type’)  获取元素属性值。结果为text,文本属性。

 13is_displayed()

设置该元素是否用户可见。

driver.find_element_by_id("idInput").is_displayed()  返回元素是否可见。结果为True或者False。

14perform()

执行所有ActionChains中存储的行为。使用鼠标操作的方法需要导入相关类。

from selenium.webdriver.common.action_chains import ActionChains

15context_click()

右击。

right_click = driver.find_element_by_id("xx")

ActionChains(driver).context_click(right_click).perform()  执行右击操作

16double_click()双击。同上15使用方法。
17drag_and_drop()

拖动。

drag_and_drop(source,target)在源元素上按住鼠标左键,然后移动到目标元素上释放。   

source:鼠标拖动的源元素;target:鼠标释放的目标元素。

18move_to_element()鼠标悬停。同上15使用方法。
19title

获取当前页面的标题。

driver.title()

20current_url

用户获得当前页面的URL.

driver.current_url()

21implicitly_wait()

隐式等待。默认参数单位为秒。

driver.implicitly_wait(5)

22sleep()

休眠。

from time import sleep

23path.abspath()

获取当前路径下的文件。

需要导入python的os模块:import os

os.path.abspath('文件名')

24switch_to.frame()切换frame。元素定位时默认从当前frame查找,所以有时需要切换frame查找元素。
25switch_to.parent_content()跳出当前一级表单。默认对应离它最近的switch_to.frame()方法。
26switch_to.default_content()跳回最外层的页面。
27switch_to.window()实现在不同的窗口之间切换。
28current_window_handle

获得当前窗口的句柄。

driver.current_window_handle

29window_handles

返回所有的窗口的句柄到当前会话。

driver.window_handles

使用方式:(获取新窗口的句柄,跳转到新窗口页面)

windows = driver.window_handles
driver.switch_to.window(windows[1])
30switch_to.alert()

切换到alert弹窗。

driver.switch_to.aler()

31accept()

接受现有警告框,就是确认。

a = driver.switch_to.alert

a.accept()

注:直接使用driver.switch_to.alert().accept()时,报错driver.switch_to.alert().accept()
TypeError: 'Alert' object is not callable

32dismiss()

解散现有警告框,就是取消。

33get_cookies()获得所有cookie的信息
34get_cookie(name)返回字典的key为“name”的cookie信息
35add_cookie(cookie_dict)添加cookie。“cookie_dict”指字典对象,必须有name和value指
36delete_cookie(name,optionsString)删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”
37delete_all_cookies()删除所有cookie信息
38execute_script()

通过借助JavaScript来控制浏览器的滚动条。

使用方法:滚动条拖动问题笔记

39windows.scrollTo()设置浏览器窗口滚动条的水平和垂直位置。
40currentSrc

返回当前音频/视频的URL。

使用JavaScript测试:

arguments[0].currentSrc

41load()

视频加载。

arguments[0].load()

42play()

视频播放.

arguments[0].play()

43pause()

视频暂停.

arguments[0].pause()

44get_srceenshot_as_file()

截取当前窗口。

driver.get_screenshot_as_file()

45quit()

退出相关的驱动程序和关闭所有窗口。

driver.quit()

46close()

关闭当前窗口。

driver.close()

47basicConfig()

开启debug模式可以捕捉客户端向服务器发送的POST请求数据。

import logging

logging.basicConfig(level=logging.DEBUG)

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值