[обновлений ниже]Нажмите не работает, но не показывает никаких ошибок
я пытаюсь нажать на результат из этого списка: 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] - «The Walking Dead (2010) (сериал)». ссылка часть, которая находится путем поиска HREF
element = element[0].find_element_by_xpath('//a[contains(@href, "title")]')
actions = ActionChains(browser)
actions.click(element).perform()
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 намного медленнее?
Ошибка из 'element.click()' это еще один вопрос - судя по ошибке, это выглядит как ссылка загружается через JavaScript и просто не делает существуют, когда вы вызываете метод 'click'. В качестве временного взлома для исследования попробуйте добавить 'time.sleep (3)', чтобы подождать 3 секунды перед 'click()'. Посмотрите, работает ли это и дайте мне знать. – That1Guy
Я все еще получаю элемент не видимой ошибки. есть ли способ проверить, что эта ссылка загружается через javascript, прежде чем пытаться запустить скрипт? Кроме того, есть ли способ щелкнуть, не используя java? – baconpancakes
Да, есть способ явно ожидать существования элемента. Как вы запускаете свой скрипт? Работает ли он без головы или вы можете смотреть браузер во время работы скрипта? – That1Guy