当前位置: 首页 > 知识库问答 >
问题:

Python Selenium 2 API并等待DOM就绪/元素可见

冯德宇
2023-03-14

我想等到DOM稳定,页面被构造,然后再尝试执行SeleniumWebDriver click()方法。

由于Selenium 2,似乎不再存在stock wait_for()方法。Selenium和Python2的“等待15秒或直到元素可点击”风格行为的最佳实践是什么?

共有2个答案

冯驰
2023-03-14

这是在ruby中实现的,我相信它也可以在Python中实现

@wait = Selenium::WebDriver::Wait.new(:timeout => 30)
#You can define as many as you want with various times
@wait_less = Selenium::WebDriver::Wait.new(:timeout => 15)
#and then
@wait.until { @driver.find_element(:id, "Submit") }
@driver.find_element(:id, "Submit").click

注意-你可以等待任何事情。其他例子

@wait.until {@driver.window_handles.size > 1}

@wait_less.until {@driver.find_element(:tag_name => "body").text.include?("Some text")}
商高谊
2023-03-14

你要找的是明确的等待。Selenium留档进一步解释了显式等待是如何工作的。

您可以在这里找到不同类型的预期条件。你最感兴趣的可能是一种叫做“visibility_of”的情况。

 类似资料:
  • 我有一个动态加载的页面,其中包含一个按钮。我正在尝试等待selenium使用C#绑定点击按钮。我有以下代码: 不过这不管用。click事件永远不会被触发。selenium脚本不会抛出异常警告ID为“addInspectionButton”的元素不存在。它只是不能点击它。如果我加一根线。Sleep(3000)在wait语句和我获得按钮元素句柄的那一行之间。 我没有使用预期条件.元素在这里正确点击吗?

  • 所以我们有一页医学专科。它原本只是英文的。因此,如果您搜索“neuro”,则HTML看起来类似于 然后他们添加了西班牙语,所以并不是所有的结果都会返回,但是只有西班牙语是可见的。一个新的 > 添加在底部。 是否有方法等待任何匹配xpath的元素可见?注意,visibilityOfAllElements()将不起作用,因为它们不会全部可见。 我想可以做的是,预先计算所有带有@id和“width”的元

  • 问题内容: 我在使用量角器时遇到了一些麻烦。我有一个非常奇怪的ui- router状态,很难摆脱其他元素来开始使用该页面。有没有办法告诉量角器等到元素最终出现在DOM中?不可见/未显示,但实际上已创建?我一直尝试使用等待元素,但是显然无法选择它。 问题答案: 您应该能够与ExpectedCondition一起使用:

  • 问题内容: 我想知道是否可以告诉puppeteer等到显示的元素。 我有什么办法可以做到这一点? 问题答案: 我认为您可以为此使用功能。 要检查可用选项,请参阅github链接。

  • 本文向大家介绍就绪状态的进程在等待什么?相关面试题,主要包含被问及就绪状态的进程在等待什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 被调度使用cpu的运行权