【问题标题】:Wait for the element to be selected in Selenium等待元素在 Selenium 中被选中
【发布时间】:2021-07-28 23:22:27
【问题描述】:

网站会在一段时间后自动填充一个文本字段,并且文本光标会移动到相同的文本字段

<html>
<div>
<input type=text id=name>Enter here</div>
<html>

输入字段会在几秒钟后被网站自动选择和填充。我希望 selenium 等到它被选中,然后继续执行进一步的代码。 我已经完成了:

wait=WebDriverWait(driver,10)
element=driver.find_element_by_id("name")
wait.until(expected_conditions.element_to_be_selected(element))

即使文本字段由网站填充,它也会引发错误。

【问题讨论】:

  • 您提供的信息不足以回答这个问题。添加指向页面的链接或将 html 代码放置到您的问题正文中。
  • 网站会自动选择并填写输入字段 - 什么时候做这个,你要等多久?
  • @cruisepandey 通常需要大约 3 到 4 秒。但我不想隐含地等待,因为即使需要 10 秒也可以。如果没有填充文本字段,我将无法继续。

标签: python selenium selenium-webdriver selenium-firefoxdriver


【解决方案1】:

关于其他类似问题的一些答案似乎适用于各自的问题。我没有找到任何关于 python 的东西。 我所做的是运行一个无限循环,直到元素中存在的文本长度不等于零。

while 1 is not 5:
    if len(element.get_attribute("value")) is not 0:
          break
    else:
          continue
element

value 属性具有文本字段中存在的任何字符串的值。

【讨论】:

    【解决方案2】:

    expected_conditions.element_to_be_selected() 跟在 spec 后面。具体来说:

    此操作仅对 复选框和单选按钮状态的输入元素有意义(强调我的)

    您的输入是文本类型,所以它不起作用。

    您将不得不使用不同的方法。也许是这样的:

    1. 阅读文本(@value 属性)。
    2. 等到它变成其他任何东西。

    【讨论】:

    • 有一个文本字段的元素属性,其值从“”更改为网站输入的任何内容。但我一直无法弄清楚如何在 if 语句中使用这种显式等待,我可以在其中执行“如果属性为真”
    • 听起来你需要谷歌如何创建Custom Wait Conditions
    • 有一个相同的问题“stackoverflow.com/questions/15656252/…”,但它是在java中,你能帮我看看python版本吗?谢谢
    • 对不起,我不会使用 Python。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2021-10-09
    • 2020-11-21
    • 2012-06-14
    相关资源
    最近更新 更多