IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> selenium的web控件定位与常见操作 -> 正文阅读

[开发测试]selenium的web控件定位与常见操作

元素定位

一共有8中定位方式:id、name、class name、tag name、link test、partial link text、xpath、css selector,每种定位方式所对应的方法如下:

定位方式具体方法具体方法
idfind_element_by_id()
namefind_element_by_name()
class namefind_element_by_class_name()
tag namefind_element_by_tag_name()
link testfind_element_by_link_text()
partial linktext find_element_by_partial_link_text()
xpathfind_element_by_xpath()
namefind_element_by_name()通过xpath定位有多种方法,列出常用的几个:
dr.find_element_by_xpath("//[@id=‘kw’]")
dr.find_element_by_xpath("//
[@name=‘wd’]")
dr.find_element_by_xpath("//input[@class=‘s_ipt’]")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class=‘soutu-btn’]/input")
dr.find_element_by_xpath("//form[@id=‘form’]/span/input")
dr.find_element_by_xpath("//input[@id=‘kw’ and @name=‘wd’]")
css selectorfind_emelent_by_css_selector()通过css selector定位有多种方法,列出常用的几个:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector(“html > body > form > span > input”)

常用的xpath

一般情况下,表达式“/”表示从根节点选取子节点;"//"表示选取当前节点中的所有元素,包括子节点,孙子节点,重孙节点……;“.”表示选取当前节点;“…”表示选取当前节点的父节点;@表示选取属性。
在这里插入图片描述

常用的css选择器

css selector和xpath一样,都可应用于selenium和appium中,但appium原生控件不支持css selector,只有在webview中才能够适用css selector

选择器示例描述
.class.intro选择class="intro"的所有元素
#id#firstname选择id="firstname”的所有元素
**选择所有元素
elementp选择所有<p>元素
element,elementdiv,p选择所有<div>和<p> 元素
element elementdiv p选择<div>元素内部的所有<p>元素
元素之间用的是空格占位符,表示获取空格左边元素<div>的所有的子元素,孙子元素……中的<p>元素
element>elementdiv>p选择父元素为<div>元素的所有<p>元素,“>”只能选取子节点
element+elementdiv+p选择紧接在<div>元素之后的所有兄弟<p>元素,div与p是同级的
[attribute][target]选择带有target属性的所有元素
[attribute=value][target=_blank]选择target="_blank"的所有元素
[:nth-child(n)]p:nth-child(2)选择属于其父元素的第二个子元素的每个<p>元素
[element1~element2]p~ul选择前面有<p>元素的每个<ul>元素

不管用xpath还是css selector,都可以打开浏览器的开发者工具,在console中调试尝试下,如下
用xpath来调试定位元素的语法:

$x('//*[@id="kw"]')

在这里插入图片描述
用css selector来调试定位元素的语法:

$('#kw')
$('[id=kw]')

在这里插入图片描述

控制浏览器操作

控制浏览器窗口大小

可以通过设置参数来控制浏览器窗口的大小,方法set_window_size(宽度,高度),参数数字为像素点,如:

from selenium import webdriver
		 
driver = webdriver.Firefox()
driver.get("http://m.baidu.com")
# 参数数字为像素点 
print("设置浏览器宽480、高800显示") 
driver.set_window_size(480, 800)
driver.quit()

另外,maximize_window()方法用来控制浏览器窗口以全屏的方式打开,无参数

控制浏览器前进后退

WebDriver提供了的back()和forward()方法来模拟浏览器的后退和前进按钮,如:

from selenium import webdriver 
		
driver = webdriver.Firefox() 
		
#访问百度首页 
first_url= 'http://www.baidu.com' 
print("now access %s" %(first_url)) 
driver.get(first_url) 
		
#访问新闻页面 
second_url='http://news.baidu.com' 
print("now access %s" %(second_url)) 
driver.get(second_url) 
		
#返回(后退)到百度首页 
print("back to %s "%(first_url)) 
driver.back()
		
#前进到新闻页 
print("forward to %s"%(second_url)) 
driver.forward() 
		
driver.quit()

刷新页面

刷新页面的方法:driver.refresh()

webdriver常用方法

方法释义备注
clear()清除文本
send_keys(value)模拟按键输入
click()单击元素
submit()提交有时候 submit()可以与click()方法互换来使用, submit()同样可以提交一个按钮, 但 submit()的应用范围远不及 click()广泛
size()返回元素尺寸
text()获取元素的文本
get_attribute(name)获得属性值
is_displayed()设置该元素是否用户可见
sleep() (Python函数)推迟调用线程的运行使用该函数要先import time,使用时:time.sleep(单位为秒)

鼠标事件

在webdriver中,关于鼠标操作的方法封装在ActionChains类中提供
ActionChains提供的常用方法有:

方法释义
perform()执行所有ActionChains中存储的行为
context_click()右击
Double_click()双击
drag_and_drop()拖动
move_to_element()鼠标悬停

执行原理:调用ActionChains的方法时,不会立即执行,而是将所有的操作按顺序存放在一个队列中,当调用perform()方法时,队列中的事件会依次执行
更多更详细的方法可参考官网:ActionChains官方文档

基本用法

# 生成一个动作 
action ActionChains(driver)
# 动作添加方法1
action.方法1
# 动作添加方法2
action.方法2
# 调用perform()方法执行
action.perform()

# 链式写法
ActionChains(driver).move_to_element(ele).click(ele).perform()

# 分布写法
actions = ActionChains(driver)
actions.move_to_element(ele)
actions.click(ele)
actions.perform()

ActionChains模拟按键

模拟按键有多种方法,可用win32api实现,或SendKeys,或selenium的WebElement对象的send_keys()方法,这里介绍ActionChains的几个方法
用法如下

action = ActionChains(driver)
action.send_keys(Keys.BACK_SPACE)
# 或者:
action.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL)
action.perform()

TouchAction鼠标模拟

ActionChains只能对PC端的设备进行模拟操作,对H5端是无效的,但TouchAction都可以,能够实现滑动,拖拽,多点触控,模拟手势等各种操作
手势控制:

方法描述
tap在指定元素上点击
double_tap在指定元素上双击
tap_and_hold在指定元素上点击但不释放
move手势移动指定偏移
release释放手势
scroll手势点击并滚动
scroll_from_element从某个元素位置开始手势点击并滚动(向上滑动为正数,向下滑动为负数
long_press长按元素
flick手势滑动
flick_element从某个元素位置开始手势滑动(向上滑动为负数,向下滑动为正数)
perform执行

定位一组元素

webdriver提供了8种用于定位一组元素的方法:

find_elements_by_id() 
find_elements_by_name() 
find_elements_by_class_name() 
find_elements_by_tag_name() 
find_elements_by_link_text() 
find_elements_by_partial_link_text() 
find_elements_by_xpath() 
find_elements_by_css_selector()

多表单切换

switch_to.frame() 默认可以直接取表单的id 或name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位。

#先通过xpth定位到iframe
xf = driver.find_element_by_xpath('//*[@id="x-URS-iframe"]')
#再将定位对象传给switch_to.frame()方法
driver.switch_to.frame(xf)
driver.switch_to.parent_frame()

警告框处理

在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作。
? text:返回 alert/confirm/prompt 中的文字信息。
? accept():接受现有警告框。
? dismiss():解散现有警告框。
? send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框。

cookie操作

有时候我们需要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和集成测试进行的。WebDriver提供了操作Cookie的相关方法,可以读取、添加和删除cookie信息。

WebDriver操作cookie的方法:

get_cookies(): 获得所有cookie信息。
get_cookie(name): 返回字典的key为“name”的cookie信息。
add_cookie(cookie_dict) : 添加cookie。“cookie_dict”指字典对象,必须有name 和value 值。
delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,选项包括“路径”,“域”。
delete_all_cookies(): 删除所有cookie信息

调用JavaScript

虽然WebDriver提供了操作浏览器的前进和后退方法,但对于浏览器滚动条并没有提供相应的操作方法。在这种情况下,就可以借助JavaScript来控制浏览器的滚动条。WebDriver提供了execute_script()方法来执行JavaScript代码。
用于调整浏览器滚动条位置的JavaScript代码如下:

window.scrollTo(左边距,上边距); 
window.scrollTo(0,450);
window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距

窗口截图

WebDriver提供了截图函数get_screenshot_as_file()来截取当前窗口。

关闭浏览器

可以使用quit()方法,其含义为退出相关的驱动程序和关闭所有窗口。除此之外,WebDriver还提供了close()方法,用来关闭当前窗口。
例如多窗口的处理,在用例执行的过程中打开了多个窗口,我们想要关闭其中的某个窗口,这时就要用到close()方法进行关闭了。

close() 关闭单个窗口
quit() 关闭所有窗口
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:56:14  更:2021-10-16 19:56:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:24:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码