python-2.7 - 如何在页面上获取元素,单击其他内容并等待原始元素消失
问题描述
我在 Windows 服务器上使用 Python 2.7、Robot Framework 和 Selenium2Library。
在带有按钮和数据文本框的页面上,我有一个单击按钮的 selenium 测试,这会触发获取请求,并在返回时重新创建数据文本框并使用新值进行更新。然后测试休眠 10 秒以允许这种情况发生,然后读取数据文本框中的值。
我真正想做的是获取数据文本框的元素,然后单击按钮并继续轮询原始数据文本引用以在 DOM 上变得不可用,即它已被重新创建,然后读取文本框以获取价值。
我一生都无法弄清楚如何使用 Robot Framework 和 Selenium2Library 来做到这一点,因为所有调用都是自包含的,并且不会将引用传回。
你能提供任何其他解决方案吗?
解决方案
SeleniumLibrary 有很多方法可以做到这一点,所有这些都围绕它的Wait Until
关键字 -文档链接。
选项一 - 元素是相同的,所以它的定位器不会改变;检查完成Wait Until Element Contains
,并传递新文本:
Click Element ${the_locator_for_the_button}
Wait Until Element Contains ${the_locator_for_the_element} your target text
选项二 - 如果单击时目标元素更改为不同的元素,例如定位器不同。然后你首先等待初始元素消失,然后新元素出现:
Click Element ${the_locator_for_the_button}
Wait Until Element Is Not Visible ${the_locator_for_the_initial_element}
Wait Until Element Is Visible ${the_locator_for_the_new_element}
选项三 - 如果您不想处理定位器,但要确保 Selenium 看到它的实际元素消失,您可以使用 获取它Get Webelement
,然后将该引用传递给Wait ...
关键字 - 大多数(如果不是全部)SeleniumLibrary 支持定位器或实际网络元素:
Click Element ${the_locator_for_the_button}
${webelement}= Get Webelement ${the_locator_for_the_initial_element}
Wait Until Element Is Not Visible ${webelement}
关键字的好处Wait Until ...
是它们不断地轮询 DOM 以获得预期的变化,并在第一次检测到满足条件时继续。例如,它不是硬编码的睡眠,它会在预定义的时间内暂停执行,而是在准备好后立即完成。
还要记住所有这些关键字都支持参数timeout=Xs
,其中 X 是关键字等待满足条件的时间。
推荐阅读
- python - 币安 API Python 设置
- vue.js - 如何通过路由设置和传递 JSON 道具
- android - 如何模拟系统覆盖方法的回调结果 - android?
- reactjs - 使用可变包装器和包装器道具键入反应组件
- build - Next.js + Production build + Webp 格式图片
- webpack - Webpack 动态导入 - 如何“导入所有”模块(import *)
- javascript - 我怎样才能使这个 JSON 数据在 API 上可用?
- node.js - 在 Swift 中使用密码和盐生成加密密钥
- python - 如何在 setup.py 中添加 PyTorch LTS 版本?
- python - 将注册页面重定向到主页 FLASK