在selenium中加速find_elements_by_css_selector

时间:2015-05-18 10:20:04

标签: selenium webdriver

参考这个问题https://sqa.stackexchange.com/questions/3481/quicker-way-to-assert-that-an-element-does-not-exist我正在尝试写一个element_is_not_present辅助函数:

def element_is_not_present(selector):
    self.d.implicitly_wait(0)
    number_present = len(self.d.find_elements_by_css_selector(selector))
    self.d.implicitly_wait(10)

    return number_present == 0

find_elements_by_css_selector将在返回之前等待隐式等待超时,因此我在调用之前和之后添加了mutators以加速方法。问题在于恢复隐式等待apparently there is no getter for the implicit wait value,因此我必须对恢复值进行硬编码,从而在使用不同的基值时导致问题。

问题是,我怎样才能加速我的方法,同时否定这个问题?如果做不到这一点,也许有另一种方法来编写辅助方法或处理显式等待?

我目前的解决方案是使用我自己的隐式等待默认值全局,但这远非理想。

1 个答案:

答案 0 :(得分:0)

简短的答案是:不要使用隐式等待。在所有代码中使用显式等待。

更长的答案:这正是人们(包括我在内)建议您不要使用隐式等待的问题之一。使用隐式等待无法在没有等待超时的情况下测试元素是否不存在。避免这种情况的唯一方法是在缺勤测试期间禁用隐式等待。或使用显式等待。

这里的答案更长:When to use explicit wait vs implicit wait in Selenium Webdriver?

也很有趣:How to test for absence of an element without waiting for a 30 second timeout