python+selenium 捕捉不到弹出的div类型的提示解决方法

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

用户名错误用户名
密码

正确密码格式

 

 

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

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

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

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

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

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

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


from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

 

 

def 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.当你捕获元素的语句在执行的时候,那个元素还没出来,或者已经消失。

可以使用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方法。
--------------------- 
作者:Dear_Merlin 
来源:CSDN 
原文:https://blog.csdn.net/Dear_Merlin/article/details/82015715 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值