Q: Selenium NoSuchElementException (не явное ожидание или iframe) - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь написать код на python, который может управлять встроенным видеоплеером (jwplayer) через автоматический браузер, в частности Smores.tv.(https://smores.tv/watch.php?v=j5UPZpjO&p=Yw4cOKqt) Однако, когда я пытаюсь найти элемент кнопки паузы / воспроизведения или любого из элементов управления, он возвращает исключение nosuchelement.

Я провел некоторое исследование этого, и этоКажется, проблема может заключаться в том, что видеоплеер находится внутри iframe, который я смог найти:

frame = driver.find_element_by_id("jwp-global-frame")
driver.switch_to.frame(frame)

не работает, и ошибка все еще была NoSuchElementException. Возможно, есть несколько встроенных iframe или что-то подобное, но я застрял в этой проблеме. (Также я знаю о проблеме, которая может возникнуть из-за загрузки страницы, и так как я не смог найти элемент для явного ожидания, я в настоящее время использую неявное ожидание страницызагрузить)

frame = driver.find_element_by_id("jwp-global-frame")
driver.switch_to.frame(frame)
pausebutton = driver.find_element_by_xpath('//*[@id="player"]/div[9]/div[4]/div[2]/div[1]')
pausebutton.click()

1 Ответ

0 голосов
/ 17 октября 2018

На сайте примера кнопка воспроизведения не находится внутри любого Iframe.

Итак, я попытался без перехода на iframe, и это сработало для меня.

# removed the iframe lines
pausebutton = WebDriverWait(driver, 120).until(
EC.presence_of_element_located((By.XPATH, '//[@id="player"]/div[9]/div[4]/div[2]/div[1]')))
pausebutton.click()

Вы также можете найти этот элемент с помощью селектора css как .jw-icon-playback

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...