WebDriverWait无法按预期工作

我正在使用selenium来抓取一些数据。

我单击的页面上有一个按钮,说“ custom_cols”。此按钮为我打开一个窗口,从中可以选择列。

此新窗口有时需要一些时间才能打开(大约5秒钟)。所以我已经使用了

WebDriverWait

延迟为20秒。但是有时它无法在新窗口中选择查找元素,即使该元素可见。在其余时间中,这种情况仅发生十次一次。

我在其他地方也使用了相同的功能(WebDriverWait),并且可以正常使用。我的意思是,它等待直到元素变得可见,然后在找到它时单击它。

我的问题是,即使我正在等待元素可见,为什么新窗口上的元素也不可见。要在此处添加,我尝试增加延迟时间,但有时仍会收到该错误。

我的代码在这里

def wait_for_elem_xpath(self, delay = None, xpath = ""):

if delay is None:

delay = self.delay

try:

myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))

except TimeoutException:

print ("xpath: Loading took too much time!")

return myElem

select_all_performance = '//*[@id="mks"]/body/div[7]/div[2]/div/div/div/div/div[2]/div/div[2]/div[2]/div/div[1]/div[1]/section/header/div'

self.wait_for_elem_xpath(xpath = select_all_performance).click()

回答:

一旦您等待该元素并在尝试调用click()方法而不是使用presence_of_element_located()method时继续前进,则需要使用

以下方法:

try:

myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))


回答:

根据您在评论中的反问题,以下是这三种方法的详细信息:

回答:

present_of_element_located(locator)的定义如下:

class selenium.webdriver.support.expected_conditions.presence_of_element_located(locator)

Parameter : locator - used to find the element returns the WebElement once it is located

Description : An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible or interactable (i.e. clickable).

回答:

visible_of_element_located(locator)定义如下:

class selenium.webdriver.support.expected_conditions.visibility_of_element_located(locator)

Parameter : locator - used to find the element returns the WebElement once it is located and visible

Description : An expectation for checking that an element is present on the DOM of a page and visible. Visibility means that the element is not only displayed but also has a height and width that is greater than 0.

回答:

element_to_be_clickable(locator)定义如下:

class selenium.webdriver.support.expected_conditions.element_to_be_clickable(locator)

Parameter : locator - used to find the element returns the WebElement once it is visible, enabled and interactable (i.e. clickable).

Description : An Expectation for checking an element is visible, enabled and interactable such that you can click it.

以上是 WebDriverWait无法按预期工作 的全部内容, 来源链接: utcz.com/qa/401773.html

回到顶部