selenium toast 有时候返回空字符串的问题

在自动化测试过程中,遇到查找Toast元素成功但返回空字符串的问题。通过分析,发现问题是由于尝试获取文本过早,导致Toast内容未加载完成。解决方案是延迟获取text属性,如等待0.5秒后再读取,能更稳定地获取到Toast的文本内容。这为处理类似自动化测试中的时效性问题提供了思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在自动化化测试过程中我们经常要对toast进行判断,但是在实际过程中,有时候会遇到查找toast成功,但是返回的字符串是空的情况,比如下方代码:

t=time.time()+10
while True:
 if time.time()>t:
     break
 try:
     print(222,web.driver.find_element(By.XPATH, '//*[contains(text(), "更新成功") and @class="el-message__content"]').text)
     break
 except:
     pass

我们获取更新成功的text文本,但是有时候会出现,元素查找成功,但是返回的字符串是空的情况,而且这种情况并不是每次都会出现,10次可能大概会有2~3次会出现这种情况,后续笔者一直以为是网页的问题,但是结果笔者测试发现,并不是网页问题,那么笔者这里就转换思路,有没有可能元素找到了,但是,找到元素时的文本并没有从接口获取到呢,抱着这个想法,我出现修改了代码进行测试,代码如下:

t=time.time()+10
while True:
    if time.time()>t:
        break
    try:
        toast=web.driver.find_element(By.XPATH, '//*[contains(text(), "更新成功") and @class="el-message__content"]')
        print("元素查找成功")
        break
    except:
        pass
# 元素查找成功后等待10s后再进行读取text操作
time.sleep(10)
print("toast:",toast.text)

运行后报错了,我们看看报错情况:
在这里插入图片描述
在这里插入图片描述
从上图我们可以看到,元素查找成功了,但是打印text的时候报错了,那么我们基本上可以断定出,toast的text属性在10s后,也就是网页toast消失后报错了,那么我们在修改一下代码,让大家更直观的了解,为什么toast返回有时为啥时空字符串,代码如下:

t=time.time()+10
while True:
    if time.time()>t:
        break
    try:
        toast=web.driver.find_element(By.XPATH, '//*[contains(text(), "更新成功") and @class="el-message__content"]')
        print("元素查找成功")
        break
    except:
        pass
# 元素查找成功后等待10s后再进行读取text操作
print("立即打印toast:","--",toast.text,"--")
time.sleep(0.5)
print("等待0.5秒后打印toast:","--",toast.text,"--")
time.sleep(0.5)
print("等待1秒后打印toast:", "--",toast.text,"--")

代码运行结果如下:
在这里插入图片描述
从上图可以看到,虽然元素查找成功,但是toast却是在元素查找成功后的0.5秒才获取到toast的文本内容,所以有时找到toast元素但返回空字符串的问题,就是因为获取toast的文本内容太快了,所以这边笔者建议获取toast元素后不要立马进行获取文本内容操作,等待0.5秒获取才能然我们更稳定的获取到toast文本内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值