【问题标题】:Selenium Webdriver wait for button text to changeSelenium Webdriver 等待按钮文本更改
【发布时间】:2014-09-03 14:43:31
【问题描述】:

我正在尝试自动化一个场景(在 Ruby 中),其中按钮初始文本为“激活”,一旦单击它,需要 3-5 秒来执行必要的操作,然后按钮文本变为“停用”。

由于按钮始终存在,因此使用以下代码无济于事。

wait.until {
  driver.find_element(:id => 'changeStatus')
}

如何让 webdriver 在单击后检查按钮文本之前等待 5 秒。

【问题讨论】:

    标签: selenium selenium-webdriver


    【解决方案1】:

    您应该能够等待并改为查找文本

    wait.until { 
      driver.find_elements_by_xpath("//*[text()='Deactivate']")
    }
    

    【讨论】:

    • 谢谢。是的,这行得通。一个小提示,我总是(尽可能)使用 id 而不是 xpath。
    • 我主要使用 CSS 选择器来查找 ID 或类名。 Xpath 有点慢,但能够搜索 CSS 选择器不能搜索的文本。在您的情况下,我认为除了使用 xpath 查找文本之外没有其他选择。
    【解决方案2】:

    Brendan 的答案绝对正确,但我会使用更具体的 XPath,因为所述答案将等到页面上的任何位置出现“停用”一词。

    考虑缩小搜索的元素类型,并按 ID 进一步缩小范围。你不说它是什么类型的元素,所以我猜它是一个锚标签(//a),根据需要调整

    wait.until { 
      driver.find_elements_by_xpath("//a[@id='changeStatus' and text()='Deactivate']")
    }
    

    这应该会大大加快搜索速度

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多