如何在Python的Selenium中实现页面缩小操作,解决元素被提示框遮挡无法点击的问题?
如何在Python的Selenium中实现页面缩小操作,解决元素被提示框遮挡无法点击的问题?
我之前也碰到过一模一样的困扰:用Selenium测试网站时,目标元素明明就在页面上,却被Chrome的*“Chrome正由自动测试软件控制”*悬浮提示框挡住,根本点不到。最开始我想通过页面缩小来绕过这个遮挡,但试了两种方法都踩了坑,后来找到了两个更靠谱的解决办法,分享给你:
我踩过的缩小页面的坑
通过JS设置zoom属性
我试过用这段代码缩小页面:browser.execute_script("document.body.style.zoom='40%'")页面确实能缩小,但尴尬的是,要点击的元素直接卡在了页面顶部,还是没法点击,等于白忙活。
模拟Ctrl+'-'组合键
我还尝试用ActionChains模拟按住Ctrl再按减号的操作,代码如下:import time from selenium import webdriver from selenium.webdriver import Keys from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By with webdriver.Chrome() as browser: browser.get('https://some_address/index.html') time.sleep(1) element=browser.find_element(By.ID, 'some_text') actions=ActionChains(browser) actions.key_down(Keys.CONTROL,element) \ .key_down(Keys.SUBTRACT,element).key_up(Keys.SUBTRACT,element) \ .key_down(Keys.SUBTRACT,element).key_up(Keys.SUBTRACT,element) \ .key_up(Keys.CONTROL,element).perform()结果完全没效果,页面丝毫没变化,这个方法也走不通。
有效的解决方案
方案一:用JavaScript强制点击元素
不用纠结遮挡问题,直接通过JS代码强制触发元素的点击事件,代码非常简单:
browser.execute_script("arguments[0].click();", element)
这个方法能绕过任何视觉遮挡,直接和元素交互,亲测有效。
方案二:彻底移除悬浮提示框
如果不想每次都绕开遮挡,最根本的办法是直接让这个提示框消失。我们可以通过添加Chrome的启动选项来关闭这个提示,具体代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_experimental_option("excludeSwitches", ["enable-automation"]) with webdriver.Chrome(options=options) as browser: # 后续的测试代码 browser.get('https://some_address/index.html') # ...
这样配置后,Chrome就不会再显示那个“被自动测试软件控制”的悬浮提示框,目标元素自然就能正常点击了。
备注:内容来源于stack exchange,提问作者Vladimir
相关产品推荐
相关产品推荐

