Python + selenium 测试自动化
断言
断言的作用是对结果进行判断 当结果符合我们预期时 就会报pass
self.assertEqual(a,b) 判断a是否等于b
self.assertln(a,b) 判断b是否包含a
self。assertTrue(a) 判断a是否是Ture
以上是我对断言的简单的用法总结
有需要了解更多断言知识的可以打开以下网页查阅学习前辈们的断言知识
基本定位
- 需要先跳转到需要定位的网址页面
- 按F12
- 点击以下的按钮
4.将鼠标移动到需要定位的位置 点击 下面的前端代码就会自动跳转到定位的代码位置
Xpath定位
当遇到项目工程量很大时 不断的去人工定位是一件非常耗时耗神的事情 以下提供一种快速拷贝Xpath定位的方法 按情况去使用(因为有时候python解释器识别不出来 当然这是少部分的时候)
-
需要先跳转到需要定位的网址页面
-
按F12
-
找到定位的位置 右键 点击copy 点击copy Xpath
-
直接在粘贴下来就可以得到需要的位置的Xpath定位了
悬停类
当我们遇到需要点击的元素需要将鼠标移动悬停在上面会展开时 就需要悬停类进行定位点击了
from selenium.webdriver.common.action_chains import ActionChains#使用悬停方法需要包含该包
copy = driver.find_element_by_xpath("***")#将悬停的地方的定位给变量copy
ActionChains(driver).move_to_element(copy).perform()#移动到悬停所在的元素上
driver.find_element_by_xpath("***").click#对悬停元素进行点击
下拉框
下拉框和悬停的区别在于 下拉框需要点击才会扩展出里面的元素 而悬停类不用 只需要将鼠标悬停在上方就可以扩展出
from selenium.webdriver.support.select import Select#使用该方法需要包含该包
copy = driver.find_element_by_xpath("***")#将需要点击的下拉框的定位给变量copy
有三种方法都可以进行选择:
1. Select(copy).select_by_index(*)#通过索引定位 *号的意思是选择第几个元素
2. Select(copy).select_by_value("**")#通过value属性进行选择 **号里选择value属性的值 通常从0开始计数
3. Select(copy).select_by_visible_text("**")#通过文本来进行选择 **号里填入选择的元素文本名字
多窗口
当我们在写自动化脚本时遇到多窗口时 因为代码并不会自动的切换窗口 所以我们需要进行切换窗口进行操作
windowsAll = driver.window_handles#获取所有的窗口
driver.swtich_to.window(windowsAll[1])#切换到第2个窗口 windowsAll[*]从0开始计数
警告框
当我们在点击时 有时会出现警告框 想要定位到警告框的元素有2种方式:
- HTML实现的警告框(可以直接通过元素定位器进行定位)
driver.find_element_by_xpath("***")
- Javascript实现的警告框(无法直接元素定位 需要使用特殊的方法进行定位)
switch_to.alert.accpet()#确认
switch_to.alert.dismiss()#取消
switch_to.alert.text#获取警告框上的文本信息
readonly属性(只可读不可改属性)
当我们遇到readonly属性时 就需要移除readonly属性才可以进行修改
js_readonly = 'document.getElementById("***").removeAttribute("***")'#将readonly属性的位置定位给变量js_readonly
driver.execute_script(js_readonly)#移除readonly属性 但只有效移除我们操作的这一次
#接下来就可以对该元素进行操作
小技巧: 我们可以通过控制台将document.getElementById("***").removeAttribute("***")联想补充 这样方便我们打代码不会打错 具体操作如下:
- 按F12
- 点击该处 在下面将代码补充后 复制粘贴到我们的代码里
如果对你有帮助就点个赞叭~ 哪里有错误多多希望可以评论告诉我 谢谢