driver = webdriver.Chrome()
url = "https://onlineradiofm.in/stations/vividh-bharati"
driver.get(url)
radio_is_paused=True
while radio_is_paused:
time.sleep(30)
play_buttons = driver.find_elements(By.XPATH,'/html/body/div[2]/div/div/div/div[1]/div/div[1]/div/div[2]/div[1]/svg[1]/g/circle')
if len(play_buttons)>0:
print(len(play_buttons),' play buttons found')
else:
print('play button not found')
driver.quit()
Я вижу, что веб-страница открывается в браузере и видна кнопка воспроизведения.
Я не могу понять причину, по которой я получаю сообщение «Кнопка воспроизведения не найдена»?
Я также пробовал xpath //*[@id = "play"]/g/circle, но получил тот же результат.
Спасибо.
если я выберу xpath //*[@id = "pause"] или //*[@id = "play"] тогда он будет найден, но при нажатии на него я получаю "selenium.common.Exceptions.ElementNotInteractableException: Message: element not" интерактивный"
Можете ли вы сначала попробовать нажать где-нибудь еще на сайте? В Chrome я получаю vividh-bharati:331 Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
Developer.chrome.com/blog/autoplay
Меня это устраивает play_button = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "svg#play")))
это работает. Можете ли вы сказать, как обнаружить кнопку паузы?
У меня это работает с https://github.com/seleniumbase/SeleniumBase (pip install seleniumbase
). Я использовал ad_block_on=True
, чтобы заблокировать рекламу на странице. Тогда мне пришлось сначала взаимодействовать с сайтом (нажал "h1"
). Наконец, я использовал js_click
на "#play circle"
:
from seleniumbase import SB
with SB(ad_block_on=True) as sb:
sb.open("https://onlineradiofm.in/stations/vividh-bharati")
sb.click("h1")
sb.js_click("#play circle")
breakpoint()
Введите c
и нажмите Enter
, чтобы выйти из breakpoint()
.
я попробую это.
Спасибо . я установил селениумбазу. много красочной продукции. когда я запустил ваш скрипт, он автоматически загрузил chromedriver, затем запустил браузер и показал приглашение (Pdb+) под кодом, почему это?
Я вставил Python breakpoint()
, чтобы приостановить выполнение сценария в конце. Введите c
и нажмите Enter, чтобы продолжить с точки останова.
Спасибо . Да, я нажал c и введите, как вы сказали в ответе.
Вы пробовали просто щелкнуть SVG вместо внутренних элементов?