使用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)')]"
答案 0 :(得分:1)
有几种方法可以实现这一目标。您可以沿着您正在查看的路径前进,并使用带有CSS Selector或XPath的OR。这些都有很好的记录。
另一个选择是创建自定义等待。 this answer中记录了一个这样的例子。您可以利用element.value_of_css_property("background")
以rgb格式返回字符串。即使格式以十六进制指定,它也将返回rgb,因此在这种情况下您不需要OR。您还可以使用记录为here的Selenium颜色支持模块。