最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Selenium做Web自动化踩过的坑

来源:博客园

1.无法定位到元素/定位元素超时(selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element/selenium.common.exceptions.TimeoutException)

在确定xpath无误的情况下,找不到元素的原因我遇到的大部分是等待时间较短,元素未加载出来,可以尝试用下面显示等待的方式解决


(资料图片仅供参考)

2.显示等待

如上所说的情况,在自动化实施过程中,尝尝会有在值执行某步操作或者某个命令之前,先看看要操作的元素是否处于显示状态、是否可操作等需求,也就是看看我们期望的场景是否存在。

这时候就可以使用显示等待,会比较节约测试脚本执行时间,程序会每隔一段时间(默认0.5默秒,也可自定义)执行一下自定义的判定条件。如果条件成立,就执行下一步,否则继续等待,直到最长等待时间,然后抛出TimeoutException异常

例:

#最多等待10秒,直到要找的按钮出现并点击

from selenium.webdriver.support.wait import WebDriverWait

self.wait = WebDriverWait(self.driver, 10)

self.wait.until(lambda x: x.find_element(by="xpath",value="//*[@id="app"]/section/main/div/div/div/div/div/div/div/div[2]/div[3]/div/a")).click()

3.iframe或frame处理

在元素定位过程中,如果出现了<frame>或者