为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法在 while 语句中实现 selenium 等待?

有没有办法在 while 语句中实现 selenium 等待?

qq_笑_17 2024-01-24 20:37:44
我正在编写一个不断循环的脚本,当它检测到页面上的某个元素中有文本时需要停止。我在 selenium python 文档中找不到任何关于执行此操作的帮助,但一定有办法。如果您仍然不明白我需要做什么,这里有一些代码:While #element is not visible:   #do stuff#when element is visible break out of statement and do something else编辑:我知道我正在寻找的元素的确切文本和确切的 xpath。然而,我只是在寻找一般性的答复,所以我不介意缺乏细节的答案。
查看完整描述

4 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

要继续循环并在Selenium检测到页面上某个元素中有文本时停止,您可以使用以下定位器策略:


while True:

    try:

        WebDriverWait(driver, 5).until(EC.invisibility_of_element((By.XPATH, "element_xpath")))

        #do stuff

        continue

    except:

        break

#do something else


查看完整回答
反对 回复 2024-01-24
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您可以尝试text_to_be_present_in_element预期的条件并实现ExplicitWait,如下所示:

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Chrome()

driver.get(URL)


timeout = <SET MAXIMUM AMOUNT OF TIME IN SECONDS TO WAIT> 

your_text = '<REQUIRED TEXT>'


element = WebDriverWait(driver, timeout).until(EC.text_to_be_present_in_element((By.ID, "<ElementID>"), your_text))

一旦出现所需的文本,这将返回元素


查看完整回答
反对 回复 2024-01-24
?
动漫人物

TA贡献1815条经验 获得超10个赞

下面的代码将获取所需的元素,然后循环直到它显示(可见)。在循环结束时,您可能需要重新获取元素(以防页面更改),然后再检查它是否显示在循环顶部。


element = driver.find_element_by_XXX(locator)

while not element.is_displayed():

    #do stuff

    element = driver.find_element_by_XXX(locator)

#when element is visible break out of statement and do something else

我还要补充一点,您可能希望有一个循环转义,以防元素永远不可见。为此,您可以在进入循环之前获取当前时间,然后检查条件while以确保自开始时间以来时间不超过 30 秒。这样你的脚本就不会陷入无限循环。


查看完整回答
反对 回复 2024-01-24
?
莫回无

TA贡献1865条经验 获得超7个赞

我正在 C# 中为 Selenium 进行编码,但从未在 while 循环中实际使用过它,但我使用隐式等待来使我的测试等待,直到我正在寻找的元素可用。该函数很容易编写,但我不确定这是否适合您。

_ = driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);

基本上,Selenium 会等待元素可用或总共 30 秒,如果元素不可用,则测试失败。


查看完整回答
反对 回复 2024-01-24
  • 4 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信