如何将WebDriverWait用于一个元素的两个条件(Python,Selenium)

时间:2016-12-22 21:42:34

标签: python css selenium conditional-statements wait

使用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'背景:#2E6E9E'作为从等待中继续前进的条件。

我使用this post来了解如何调整css样式的等待。

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

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

所以xpath将是

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

1 个答案:

答案 0 :(得分:1)

有几种方法可以实现这一目标。您可以沿着您正在查看的路径前进,并使用带有CSS Selector或XPath的OR。这些都有很好的记录。

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