栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

自动化测试selenium——常用API(多层框架、层级定位、弹出框处理...)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自动化测试selenium——常用API(多层框架、层级定位、弹出框处理...)

文章目录

一、勾选按钮

1.导入系统类2.打开绝对路径3.勾选CheckBox4.使用循环定位一组元素,勾选多个checkbox 二、多层框架/多层窗口的定位

1.从默认页面到f1框架页面2.元素在这个界面上,才能定位到3.窗口定位 三、层级定位

导入键盘事件包 四、下拉框的处理

1.用xpath定位2.用数组定位 五、弹出框处理六、弹出框输入七、div模块的处理八、上传文件的操作

一、勾选按钮 1.导入系统类
from selenium import webdriver
import time
#导入系统类
import os
driver = webdriver.Chrome()
2.打开绝对路径
#绝对路径
url = "file:///" + os.path.abspath("D:/AASHIRUI/测试文件/selenium2html/checkbox.html")
driver.get(url)
time.sleep(3)
driver.maximize_window()
3.勾选CheckBox
#勾选里面所有的checkbox
driver.find_element_by_id("c1").click()
driver.find_element_by_id("c2").click()
driver.find_element_by_id("c3").click()

运行结果

4.使用循环定位一组元素,勾选多个checkbox
#定位一组tag name都为input的元素
buttons = driver.find_elements_by_tag_name("input")
for button in buttons:
    if button.get_attribute('type') == 'checkbox':
        button.click()
二、多层框架/多层窗口的定位

页面比较复杂,页面套页面,定位第几层窗口,找元素时,要先看元素在哪个框架,找到框架在定位元素。
框架也是某一个具体页面的元素

1.从默认页面到f1框架页面
from selenium import webdriver
import time
#导入系统类
import os
driver = webdriver.Chrome()
#绝对路径
url = "file:///" + os.path.abspath("D:/AASHIRUI/测试文件/selenium2html/frame.html")
driver.get(url)
time.sleep(3)
driver.maximize_window()
#从默认页面到f1框架页面
driver.switch_to.frame("f1")
driver.find_element_by_link_text("click").click()
2.元素在这个界面上,才能定位到

default到达f2页面?
default——f1——f2
switch_to.frame(f1)
switch_to.frame(f2)
在f2页面,如何回到f1页面?
先回到默认页面
driver.switch_to.default_content()
driver.switch_to.frame(“f1”)

3.窗口定位

driver.switch_to_window(“windowName”)

三、层级定位

打开层级,到达要定位的元素的层级,再去进行相应的操作

from selenium import webdriver
import time
#导入系统类
import os
driver = webdriver.Chrome()
#绝对路径
url = "file:///" + os.path.abspath("D:/AASHIRUI/测试文件/selenium2html/level_locate.html")
driver.get(url)
time.sleep(3)
driver.maximize_window()
导入键盘事件包
from selenium.webdriver.common.action_chains import ActionChains

要达到这样的效果

#定位link1,点击
driver.find_element_by_link_text("link1").click()
driver.implicitly_wait(10)
#定位Another Action
action = driver.find_element_by_link_text("Another action")
#高亮显示Another action,把鼠标移动到Another action上面
ActionChains(driver).move_to_element(action).perform()

四、下拉框的处理

1.用xpath定位
#用xpath定位
driver.find_element_by_xpath("//*[@id='ShippingMethod']/option[4]").click()
time.sleep(6)

运行结果
2.用数组定位

2.用数组定位
options = driver.find_elements_by_tag_name("option")
options[3].click()


原因是拼写少了s

五、弹出框处理


#定位元素,点击,使得弹出框出现
driver.find_element_by_id("tooltip").click()
#定位弹出框/获得弹出框的操作句柄
alert = driver.switch_to.alert
time.sleep(3)
#关闭alert
alert.accept()
time.sleep(5)
六、弹出框输入

#先定位元素
driver.find_element_by_tag_name("input").click()
time.sleep(2)
#先获得弹出框的操作句柄
alert = driver.switch_to.alert
#输入语句
alert.send_keys("zzw是大傻逼!")
time.sleep(3)
#关闭信息展示框
alert.accept()

运行结果

七、div模块的处理

如果要定位的元素的属性,页面有很多元素相同的属性,可以先定位该元素所在的具体div模块,然后再想办法定位该元素

点击click——点击click me——点击close

#点击弹框
driver.find_element_by_link_text("Click").click()
time.sleep(3)
#点击div框框里的click me,让弹出框内容发生变化
div1 = driver.find_element_by_class_name("modal-body")
div1.find_element_by_link_text("click me").click()
time.sleep(4)
#先定位div,再定位具体的button
div2 = driver.find_element_by_class_name("modal-footer")
buttons = driver.find_elements_by_tag_name("button")
buttons[0].click()
time.sleep(6)
八、上传文件的操作

driver.find_element_by_name("file").send_keys("C:\Users\Administrator\Desktop\秀秀\壁纸/2.jpg")

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号