我有一个问题,因为页面上有一个元素随机出现。如果出现,我要等到隐藏为止。如果没有出现,我想转到下一个测试步骤(下一行代码,下一个函数)。我该怎么做?
我的代码:
def elementwait(self):
WebDriverWait(self.driver, 15).until(
expected_conditions.element_to_be_clickable(myPathtoElement)
)
loader = self.driver.find_element(*myPathtoElement)
WebDriverWait(self.driver, 15).until(
expected_conditions.invisibility_of_element_located(myPathtoElement)
)
答案 0 :(得分:0)
您可以像这样使用Try。
def elementwait(self):
if len(WebDriverWait(self.driver, 15).until(expected_conditions.presence_of_all_elements_located((By.XPATH,"myPathtoElement"))))>0 :
driver.find_element_by_xpath("myPathtoElement").click()
else:
loader = self.driver.find_element(*myPathtoElement)
WebDriverWait(self.driver, 15).until(
expected_conditions.invisibility_of_element_located(myPathtoElement)
)
答案 1 :(得分:-1)
您将要等到元素出现,然后,如果成功,请等到元素消失。如果未成功,则需要捕获超时异常,然后继续。为此,您需要将等待时间包装在try-catch
中,这样,如果该元素从不出现,则捕获超时异常,并且可以继续执行。
def element_wait(self):
try:
wait = WebDriverWait(self.driver, 15)
wait.until(expected_conditions.visibility_of_element_located(myPathtoElement))
wait.until(expected_conditions.invisibility_of_element_located(myPathtoElement))
except TimeoutException:
// nothing to do here since the element did not appear
// continue execution here
一些注意事项:
element_wait()
,因为它更像是python-y。您可能想要一个更具描述性的方法名称,但我想不出一个名称不是很长的方法... wait_for_element_to_appear_and_disappear()
或更具体的名称,例如handle_loader()
等,请参见python naming conventions有关更多信息。您可能希望将变量名也更改为更多python-y,例如myPathtoElement
。loader
,所以我不确定它是否应该放在第一位,所以我将其删除。