当与mobile useragen一起使用时,不能使用python selenium单击网页元素

2024-06-02 08:07:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试自动点击网页上嵌入式iframe音乐播放器的play按钮,我正在使用python3和Selenium编码来选择要点击的元素

当用户代理被更改为复制移动设备时,包装层会隐藏我通常可以单击的按钮,它会询问我是要在主站点还是在浏览器中侦听。我想在浏览器中收听,但到目前为止,我尝试单击正确的元素来实现这一点的所有操作都失败了

我相信我点击了错误的部分,但找不到访问正确部分的方法

浏览器的inspect窗口显示了我需要单击的包装部分的以下内容:

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

当我将鼠标悬停在::before部分上时,它会在浏览器中高亮显示我认为需要单击的部分,但使用右键单击检查::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表示的元素,但我不知道如何做到这一点


Tags: toinbrowser元素网页driverlink浏览器
1条回答
网友
1楼 · 发布于 2024-06-02 08:07:38

我找到了一个解决方法,并通过在python脚本中使用Selenium隐藏包装覆盖来进行Javascript调用,从而解决了这个问题

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

一旦用上述代码隐藏了覆盖,就可以在浏览器中访问原始按钮

相关问题 更多 >