单击不起作用,但没有显示错误

时间:2016-11-29 16:37:14

标签: python selenium selenium-chromedriver

[以下更新]

我正在尝试点击此列表中的结果:http://www.imdb.com/find?ref_=nv_sr_fn&q=walking+dead&s=all

我在选择之前尝试匹配的参数,所以我首先找到元素,然后尝试单击匹配的元素。在这种情况下,它将是2010年系列的第一个链接

现在我有了这个,不会导致错误,但链接实际上没有被点击。有人可以帮我解决这个问题吗?

我得到了结果元素列表

element = browser.find_elements_by_xpath('//td[contains(@class, "result_text")]')
过滤后,第一个结果是我想要的。 元素[0]是“行尸走肉(2010)(电视剧)”。 通过搜索href

找到链接部分
element = element[0].find_element_by_xpath('//a[contains(@href, "title")]')
actions = ActionChains(browser)
actions.click(element).perform()

relevent element inspection

UPDATE1: element.click()不起作用

Traceback (most recent call last):
  File "U:\backup\references\python practice\episodes.py", line 41, in <module>
    element.click()
  File "C:\Python27\lib\site-packages\selenium-3.0.1-py2.7.egg\selenium\webdriver\remote\webelement.py", line 77, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\Python27\lib\site-packages\selenium-3.0.1-py2.7.egg\selenium\webdriver\remote\webelement.py", line 494, in _execute
    return self._parent.execute(command, params)
  File "C:\Python27\lib\site-packages\selenium-3.0.1-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium-3.0.1-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
  (Session info: chrome=54.0.2840.99)
  (Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)

UPDATE2: 试图等待元素的可见性

element = browser.find_elements_by_xpath('//td[contains(@class, "result_text")]')
elementchild = element[x].find_element_by_xpath('//a[contains(@href, "title")]')
elementvisibility = WebDriverWait(browser, 60).until(
    EC.visibility_of_element_located((By.XPATH, '//a[contains(@href, "title")]'))
)
elementchild.click()

但是我遇到超时异常

Traceback (most recent call last):
  File "U:\backup\references\python practice\episodes.py", line 44, in <module>
    EC.visibility_of_element_located((By.XPATH, '//a[contains(@href, "title")]'))
  File "C:\Python27\lib\site-packages\selenium-3.0.1-py2.7.egg\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

奇怪的是,元素可以通过'elementchild ...'行找到,但即使使用60秒计时器也不可见。可以javascript加载那么慢吗?

1 个答案:

答案 0 :(得分:0)

而不是使用ActionChains,只需调用click的{​​{1}}方法:

element

如果元素在页面后加载但无法立即找到,则可以在调用element = element[0].find_element_by_xpath('//a[contains(@href, "title")]') element.click() 方法之前显式等待元素出现

以下是Autofac的示例:

click