【发布时间】:2018-02-08 14:58:59
【问题描述】:
我的显式等待不是等到元素出现。它实际上会等待我声明的秒数,然后测试仍然失败。如果我在测试通过的完全相同的地方放置一个隐式等待。从我正在阅读的内容来看,最好的做法是尽可能避免隐式等待。难道我做错了什么?
我在 base_page 中创建了一个方法,如下所示:
def _wait_for_is_displayed(self, locator, timeout):
try:
wait = WebDriverWait(self.driver, timeout)
wait.until(expected_conditions.visibility_of_element_located((locator["by"], locator["value"])))
except TimeoutException:
return False
return True
然后我像这样在页面对象中调用 _wait_for_is_displayed 方法,但失败了:
def relatie_page_present(self):
self._wait_for_is_displayed(self._open_actieve_polissen_tab, 10)
def relatie_page_(self):
self._click(self._open_relatie_details)
self.relatie_page_present()
我得到的错误是:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"td.first > a"}
通过:
def relatie_page_present(self):
self.driver.implicitly_wait(10)
def relatie_page_(self):
self._click(self._open_relatie_details)
self.relatie_page_present()
最后在我的测试套件中,我调用了 relatie_page_present 和 relatie_page_ 方法。
【问题讨论】:
-
等待 10 秒后失败会出现什么错误?请发布您使用的隐式等待代码,以便我们进行比较。
-
self.driver.implicitly_wait(10) 在 relatie_page_present(self) 方法中。
-
你没有回答我的第一个问题。另外,请编辑问题并在其中发布详细信息以获取答案和代码。
-
对不起。我刚刚编辑了我的问题。带有错误消息和通过测试的等待。
标签: python selenium object wait explicit