webdriver相关方法归纳

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

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)

 
--------------------- 
作者:小小小羊羊羊 
来源:CSDN 
原文:https://blog.csdn.net/young_gril/article/details/82768321 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值