自动化测试——实践【3】
目录
只有认知的突破💫才能带来真正的成长💫编程技术的学习💫没有捷径💫一起加油💫

🍁感谢各位的观看🍁欢迎大家留言🍁咱们一起加油🍁努力成为更好的自己🍁
弹窗
弹窗这个元素,是无法通过元素定位的,它需要用到seleinum里面提供alert接口
警告弹窗+确认弹窗
#找到对应的弹窗元素
alert = driver. switchTo.alert
#确认
alert.accept()
#取消
alert.dismiss()
提示弹窗
alert = driver. switchTo.alert
alert.send_keys("hello")
alert.accept()
alert.dismiss
等待
代码执行的速度要比浏览器渲染速度快,如果不等待的话,就会出现代码执行完了,元素还没加载出来,就会出现找不到元素的报错。
强制等待
time.sleep(秒数):当代码执行到这句代码的时候,就会阻塞住,直到时间到,才会继续往后执行代码。但是,这种等待得效率较低,浪费时间。
隐式等待
implicitly_wait(秒数):这个等待函数,一次设置作用于全局。每次查找元素的时候,它会在你设置得时间里,不断得查找元素是否加载好了,发现元素加载好后,就会继续往后执行代码。如果,在超出指定的时间还未找到元素,就会报错终止代码的执行。
#隐式等待5秒
driver.implicitly_wait(5)
显示等待
显示等待不会作用于全局,等待哪个元素,就要对其单独设置等待。它的工作原理和隐式等待一样。
-
WebDriverWait(driver, sec).until(functions) -
functions:涉及到selenium.support.ui.ExpectedConditions包下的ExpectedConditions类,==等待的元素。
from selenium.webdriver.support import expected_conditions as EC #太长了就相当#于typdef成EC wait = WebDriverWait(driver,2) wait.until(EC.invisibility_of_element((By.XPATH,'//[@id="2"]/div/div/div[3]/dv[1]/div[1]/div')))
浏览器导航操作
-
driver.get("url"):访问网页。 -
driver.back():浏览器的后退。 -
driver.forward():浏览器的前进。 -
driver.refresh():浏览器的刷新。
文件上传
-
文件的上传,也是先获取该文件的路径,然后,点击提交,才能真正意义上的文件上传。所以,我们可以直接选择对应的元素,然后,把该文件的路径send_keys,最后点击上传。
-
点击文件上传的场景下会弹窗系统窗口,进行文件的选择。selenium 无法识别非 web 的控件,上传文件窗口为系统自带,无法识别窗口元素。但是,可以使用 sendkeys 来上传指定路径的文件,达到的效果是一样的。
driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%A F%95/selenium4html/selenium-html/upload.html") ele = driver.find_element(By.CSS_SELECTOR,"body > div > div > input[type=file]") ele.send_keys("D:\\file\\test.txt")
-
tips:send_keys不但可以输入信息,还可以输入文件路径。
浏览器参数设置
设置无/有头模式
options = webdriver.EdgeOptions() #创建一个options选项类对象 options.add_argument("-headless") #然后通过add_argument函数配相应的参数
driver = webdriver.Edge(service=Service(edge),options=options)
-
无头模式:代码执行的时候,是在后台运行的,不会显示执行的界面。
-
有头模式:不配置无头模式,就是默认有头模式,它会显示执行的过程。
页面加载策略
options.page_load_strategy = '加载⽅式' ,页面加载⽅式主要有三种类型:
-
normal:默认值,等待所有资源下载。 -
eager:页面整体的框架已准备就绪,但诸如图像的其他资源可能仍在加载。 -
none:完全不会阻塞WebDriver。 -
options = webdriver.EdgeOptions() options.page_load_strategy = 'eager' driver = webdriver.Edge(service=Service(edge),options=options)
总结:normal等待所有的资源加载完成,eager等待页面的整体骨架加载完成就OK了,none不管你丫的是否加载完,直接不等待。
更多推荐

所有评论(0)