自动化测试

自动化测试(WebDriver API)

1 浏览器的操作

在这里插入图片描述

1.1控制浏览器窗口的大小

设置大小:driver.set_window_size(400,800)
浏览器最大化:
driver.maxsize_windoe()
注意:无法最小化浏览器窗口

1.2浏览器前进后退刷新

后退:driver.back()
前进:driver.forward()
刷新:driver.refresh()

1.3获获取当前页面取浏览器的标题和URL

获取当前页面的URL:driver.current_url
获取当前页的title:driver.title

1.4切换句柄

案例
在这里插入图片描述
driver.window_handles
driver.current_window_handle
driver.switch_to.window(handles[-1])

2 网页元素定位

2.1网页元素定位

几种常用网页元素定位方法
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_test()
find_element_by_partical_link_test()
Xpath定位:find_element_by_xpath()
CSS定位:下面会详细说明
案例 QQ邮箱登录
在这里插入图片描述

2.2 Xpath定位

2.2.1 绝对路径定位

find_element_by_xpath("/html/body/div/div/div/div/form/span/input")
(好麻烦)
标签名的层级关系来定位元素,如果同一层级下有多个相同的标签名,用序号标识第几个如:div[2]

2.2.2 利用元素属性定位

以百度输入框为例
find_element_by_xpath("//input[@id=‘kw’]")

2.2.3 层级与属性结合

find_element_by_xpath("//span[@class=‘bg s_ipt_wr’]/input")

2.2.4 使用逻辑运算符

如果一个属性不能唯一区分一个元素,可以使用逻辑运算符连接多个属性查找元素
find_element_by_xpath("//input[@id=‘kw’ and @class=‘su’]")
在这里插入图片描述

2.2.5 使用contains方法

driver.find_element_by_xpath("//span[conatains(@class,‘s_ipt_wr’)]/input").send_keys(“hello”)

2.2.6 使用text(方法)

driver.find_element_by_xpath("//a[text()=‘新闻’]").click()
当然,contains和text()也可以配合使用
driver.find_element_by_xpath("//[contains(text(),‘selenium’)]").click()

2.3 CSS定位(参照CSS选择器)

以百度输入框和搜索按钮为例

2.3.1 通过class属性定位

find_element_by_css_selector(".s_ipt")
find_element_by_css_selector(".bg_ s_tn")

2.3.2 通过id属性定位

find_element_by_css_selector("#kw")
find_element_by_css_selector("#su")

2.3.3 通过标签名来定位(重复概率大,不建议使用)

find_element_by_css_selector(“input”)

2.3.4 通过父子关系定位

find_element_by_css_selector(“span>input”)

2.3.5 通过属性定位

find_element_by_css_selector("[name=‘wd’]")

2.3.6 组合定位

find_element_by_css_selector(“form#form>span>input#kw”)
要定位一个元素,标签名为input,次元素的id属性为kw;并且此元素有个父元素为span,span还有个父元素为form,而且form元素的id属性为form。

2.3.7 更多定位用法

查找id属性包含“kw”字符串的元素:
find_element_by_css_selector("[id*=‘kw’]")
查找id属性以“kw”字符串开头的元素:
find_element_by_css_selector("[id^=‘kw’]")
查找id属性以“kw”字符串结尾的元素:
find_element_by_css_selector("[id$=‘kw’]")
查找form标签下面2个input标签的元素:
find_element_by_css_selector(“form>input:nth-child(2)”)

• 选择id 为radio 的div 下的第4 个input 节点之后挨着的 label节点
div#radio>input:nth-of-type(4)~label
• css同样也可以实现逻辑运算,同时匹配两个属性,这里跟xpath不一样,无需写and关键字
[type=‘checkbox’][name=‘checkbox1’]
• 正方向范围, 选中从第6个开始的子元素
li:nth-child(n+6)
• 负方向范围,选中从第1个到第9个子元素。就相当让你选中第9个和其之前的所有子元素
li:nth-child(-n+9)
• 前后限制范围
li:nth-child(n+4):nth-child(-n+8)
选中第4-8个子元素。使用 nth-child(n+4):nth-child(-n+8) 我们可以选中某一范围内子元素,上面的例子里是从第4个到第8个子元素

2.4CSS与Xpath的类似功能对比

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值