【问题标题】:How to use WebDriverWait with two conditions for one element (Python, Selenium)如何在一个元素的两个条件下使用 WebDriverWait(Python、Selenium)
【发布时间】:2016-12-22 21:42:34
【问题描述】:

使用 selenium 和 python 创建一些 GUI 测试。我正在测试以确保在单击按钮之前存在一个按钮并且是蓝色(“活动”)......但有时颜色是十六进制,有时是 rgb,所以我需要检查我的网络驱动程序中的任何一个等待.

这是我所拥有的:

xpath = str(locator) + "[contains(@style, 'background: rgb(223, 239, 252)')]"

WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH, xpath)))

现在这可行,但我想添加 OR 'background: #2E6E9E' 作为从等待中继续前进的条件。

我使用 this post 来了解如何在 css 样式上设置等待。

另外,传递给定位器的示例是

"//button[@id='button1']"

所以 xpath 应该是

"//button[@id='button1'][contains(@style, 'background: rgb(223, 239, 252)')]"

【问题讨论】:

标签: python css selenium conditional-statements wait


【解决方案1】:

有几种方法可以实现这一点。您可以按照您现在正在查看的路径,将 OR 与 CSS 选择器或 XPath 一起使用。这些都是有据可查的。

另一个选项是创建自定义等待。 this answer 中记录了这方面的一个示例。您可以利用 element.value_of_css_property("background") 以 rgb 格式返回字符串。即使格式以十六进制指定,它也会返回 rgb,因此在这种情况下您不需要 OR。您还可以使用记录在 here 中的 Selenium 颜色支持模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 2021-04-01
    • 2021-09-28
    • 2021-01-28
    • 2021-11-25
    • 1970-01-01
    相关资源
    最近更新 更多