Selenium WebDriver中是否存在等待元素获得或失去类的现有方法?例如,我的select的HTML如下所示:
<select id="select-1" class="selectBox ui-state-error" row-index="0" tabindex="-1" aria-hidden="true">
...
</select>
相关课程为ui-state-error
。这基本上在我的下拉菜单上显示红色突出显示。基本上,我想设置一个显式的等待,直到我的select元素获得类ui-state-error
或丢失类ui-state-error
。
我不确定这是否可能。
Python版本:3.4.3。 Selenium的Python绑定:2.46.0
答案 0 :(得分:3)
没有内置的方法来实现它。你需要写一个custom Expected Condition:
from selenium.webdriver.support import expected_conditions as EC
class wait_for_class(object):
def __init__(self, locator, class_name):
self.locator = locator
self.class_name = class_name
def __call__(self, driver):
try:
element_class = EC._find_element(driver, self.locator).get_attribute('class')
return element_class and self.class_name in element_class
except StaleElementReferenceException:
return False
用法:
wait = WebDriverWait(driver, 10)
wait.until(wait_for_class((By.ID, 'select-1'), "ui-state-error"))
预期的条件是,基本上是callables,这意味着你可以只编写一个函数,但我喜欢在python-selenium内部按照它们的内部类实现。