与移动用户代理一起使用时无法使用 python selenium 单击网页元素
Can't click on webpage element using python selenium when used with mobile user-agent
我正在尝试自动点击网页上嵌入式 iframe 音乐播放器的播放按钮,我正在使用 python 3 和 Selenium 对要点击的元素进行 select 编码。
当用户代理更改为复制移动设备时,包装层会遮挡我通常可以点击的按钮,它会询问我是想在主站点上收听还是在浏览器中收听。我想在浏览器中收听,但到目前为止,我尝试点击正确的元素来实现这一点的一切都失败了。
我相信我点击了错误的部分,但找不到访问正确部分的方法。
浏览器的检查 window 显示下面我需要点击的包装器部分:
<a class="mobilePrestitial__link sc-font-light" href="#">
Listen in browser
</a>
::before
"
Listen in browser
"
/a>
当我将鼠标悬停在 ::before 部分时,它突出显示了浏览器中我认为我需要单击的部分,但是使用右键单击检查 ::before 只是说 'scroll in view' 所以我无法复制无论元素代表什么。
我目前的代码是这样的:
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 显示的元素,但不知道该怎么做。
我找到了一个变通方法并解决了这个问题,方法是在 python 脚本中使用 Selenium 隐藏包装器覆盖层以进行 Javascript 调用
driver.execute_script('document.getElementsByClassName("mobilePrestitial")[0].style.display=\"none\"')
使用上述代码隐藏叠加层后,即可在浏览器中访问原始按钮
我正在尝试自动点击网页上嵌入式 iframe 音乐播放器的播放按钮,我正在使用 python 3 和 Selenium 对要点击的元素进行 select 编码。
当用户代理更改为复制移动设备时,包装层会遮挡我通常可以点击的按钮,它会询问我是想在主站点上收听还是在浏览器中收听。我想在浏览器中收听,但到目前为止,我尝试点击正确的元素来实现这一点的一切都失败了。
我相信我点击了错误的部分,但找不到访问正确部分的方法。
浏览器的检查 window 显示下面我需要点击的包装器部分:
<a class="mobilePrestitial__link sc-font-light" href="#">
Listen in browser
</a>
::before
"
Listen in browser
"
/a>
当我将鼠标悬停在 ::before 部分时,它突出显示了浏览器中我认为我需要单击的部分,但是使用右键单击检查 ::before 只是说 'scroll in view' 所以我无法复制无论元素代表什么。
我目前的代码是这样的:
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 显示的元素,但不知道该怎么做。
我找到了一个变通方法并解决了这个问题,方法是在 python 脚本中使用 Selenium 隐藏包装器覆盖层以进行 Javascript 调用
driver.execute_script('document.getElementsByClassName("mobilePrestitial")[0].style.display=\"none\"')
使用上述代码隐藏叠加层后,即可在浏览器中访问原始按钮