Невозможно щелкнуть элемент веб-страницы с помощью python selenium при использовании с мобильным пользовательским агентом - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь автоматизировать нажатие на кнопку воспроизведения встроенного музыкального проигрывателя iframe на веб-странице. Я пишу код с использованием python 3 и Selenium, чтобы выбрать элемент для щелчка.

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

Я считаю, что нажимаю не ту часть, но не могу найти способ доступа кправильная часть.

В окне проверки браузера показано следующее для той части оболочки, на которую мне нужно нажать:

<a class="mobilePrestitial__link sc-font-light" href="#">
    Listen in browser
  </a>
  ::before
"
    Listen in browser
    "
    /a>

При наведении курсора на часть :: before она выделяетсята часть в браузере, которую, я считаю, мне нужно щелкнуть, но с помощью щелчка правой кнопкой мыши для проверки :: прежде просто говорит «прокрутка в представлении», поэтому я не могу скопировать то, что представляет элемент.

Мой текущий код такой:

driver.switch_to.default_content()
driver.switch_to.frame(driver.find_element_by_partial_link_text('Listen in browser'))          
element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//a[@class="mobilePrestitial__link"]'))
)
element.click()

Но это ошибка без сообщения, я подозреваю, что мне нужно нажать на элемент, представленный :: before, но не могу понять, как это сделать.

1 Ответ

0 голосов
/ 14 октября 2019

Я нашел обходной путь и решил эту проблему, скрыв наложение оболочки, используя Selenium в скрипте Python для выполнения вызова Javascript

driver.execute_script('document.getElementsByClassName("mobilePrestitial")[0].style.display=\"none\"') 

после того, как наложение скрыто с помощью приведенного выше кода, исходная кнопка доступна вбраузер

...