selenium:定位一闪而过的弹窗

selenium:定位一闪而过的弹窗

测试TP商城的时候,遇到了一闪而过的弹窗,右击检查很难捕获,看了代码,是JS写的函数判断,alert弹出信息。
然后就陷入了无限的搜索alert弹窗定位的循环中,最终发现根本不是alert弹窗,所以alsert始终没有实现定位。

这里记录一下,alert弹窗的解决办法,虽然问题没解决,但是学到了好多知识。附上官网教程alert弹窗

# 点击来获得弹窗
driver.find_element(By.XXX, 'xxx').click()
# 等待弹出出现(快捷导包alt+enter)
alert = WebDriverWait(driver, timeout=10, poll_frequency=0.5).until(expected_conditions.alert_is_present())

# 保存弹窗信息
text = alert.text

# 按下确定按钮
alert.accept()

下面来记录一下怎么成功解决tp商城问题

  1. 首先先让弹窗不消失
    可以直接打开console,输入代码setTimeout(() => {debugger;}, 4000); 回车---->表示4秒后冻结窗口,除非手动结束,否则不会消失,这时候4秒内点击登录,弹出消息就被冻结了。(此方法比较好)
    或者根据下面的操作:
    打开网页,按下F12检查元素
    点击Sources
    点击Sources
    填写用例数据,点击登录,弹窗出来的时候,按下ctrl+\键,就会暂停。
  2. 这时,点击Elements,查看元素
    定位元素
    这样可以定位元素了。
  3. 到这里我又遇到了一个问题
    复制的xpath和css选择器都是以id属性来定位的
    复制的xpath://*[@id=“layui-layer1”]/div[2]
    而id的属性值是在变化,递增的 - -|id递增
  4. 解决id变化递增的问题
    只能自己写xpath了

//*[starts-with(@id, ‘layui-layer’)]/div[2]

el = driver.find_element(By.XPATH, 
	'//*[starts-with(@id, "layui-layer")]/div[2]')
print(el.text)

问题终于解决了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值