首页 > 编程知识 正文

比亚迪宋plus dmi有颗粒捕捉器吗,21款艾瑞泽5 pro有颗粒捕捉器吗

时间:2023-05-03 18:35:07 阅读:209433 作者:3608

我在用python+selenium,进行某一网址,登录口的测试时,对错误处理进行处理

用户名错误用户名密码正确密码格式

然后,如果是上面这种情况,系统会从右上角弹出一个类似于文本框的提示:

不存在该用户名或用户被禁用!

但是这个框,我尝试捕获<p>,<div>,它是div类型的,但是无法捕获,如下:

b.find_element_by_xpath('/html/body/div[2]/div/div[1]/p')

后来发现只有三种可能!:

1.捕获元素时语法写错了

下面的代码中,我以为是对的,后来总是报错,你能看出来是什么吗,答案我会放在最后一行:

from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitdef get_ele_time(driver,time,func): WebDriverWait(driver,time).until(func)def test(): driver = webdriver.Firefox() driver.get('http://192.168.0.100') #这是我进去的网址,你们不用试了。。 try: err = get_ele_time(driver,3, lambda driver: driver.find_element_by_xpath('/html/body/div[2]/div/div[1]/p'))#上面这句话就是想要获得弹框的元素 print(err.text) #然后把弹框里的文字打印出来 except BaseException as e: print(repr(e)) #如果try里面有错误,则执行这句话,把错误信息打印出来if __name__ == '__main__': test() 2.元素是隐藏的

display:none,这种情况,移步虫师的selenium操作隐藏的元素,https://www.cnblogs.com/fnng/p/5365900.html

3.cqdlr捕获元素的语句在执行的时候,那个元素还没出来,或者已经消失。

可以使用time.sleep(秒数),提前引用time。  在文件开头 import time.这样的话,可以设置等待多少秒,再去找你想要的元素

答案:我犯了第一个错误!语法错误!我忘了在下面的函数里,加上return了。应该是

def get_ele_time(driver,time,func):
    return WebDriverWait(driver,time).until(func)

如果加上return,那么下面这句话

① err = get_ele_time(driver,3,lambda driver: driver.find_element_by_xpath('/html/body/div[2]/div/div[1]/p'))

② print(err.text)

对于①,get_ele_time()函数返回,lambda函数返回的元素。然后这个返回值,赋值给err。所以这样err就是我们要找的元素了。

然后②被执行,就可以打印出“不存在该用户名或用户名被禁用!”

刚刚,因为我忘了加上return,所以get_ele_time()没有返回值,那么err就被赋值了none。所以①还是被执行了,但是②就报错了,因为none类型没有text方法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。