使用chromedriver打开浏览器新窗口遇到问题无法解决:
在python里使用chromedriver操作浏览器,chromedriver的配置如下:
USER_AGENTS = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
]
# 从列表中随机选择一个
User_Agent = random.choice(USER_AGENTS)
# 配置chromedriver
chrome_options = Options()
# 禁止浏览器弹窗
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_argument(f'user-agent={User_Agent}')
# 解决https页面出错的问题
# chrome_options.add_argument(self.User_Agent)
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--ignore-urlfetcher-cert-requests')
# 关闭gpu加速
chrome_options.add_argument('--disable-gpu')
# 沙箱模式
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument(r'user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data')
chrome_options.add_argument('--disable-infobars')
chrome_options.add_argument('user-tmp=209')
# 设置capabilities, 保留chrome devtools 中的network信息
capabilities = DesiredCapabilities.CHROME
# 构建webdriver的service,指定一下chromedriver的位置
s = Service(os.path.join(modules_path, 'chromedriver.exe'))
# 开始构建driver,我们使用chromedriver去构建,设置一下配置
driver = webdriver.Chrome(executable_path=os.path.join(modules_path, 'chromedriver'),
desired_capabilities=capabilities, chrome_options=chrome_options, service=s)
driver.implicitly_wait(10)
在主代码中,我想用driver打开一个新窗口:
driver.get("URL1")
driver.execute_script("window.open('{}')".format("URL2"))
浏览器可以正常启动,URL1也可以正常打开,但是URL2的这个新窗口就是打不开,报错为:
File "E:\XBX\science\vertex\front_end_2.py", line 280, in open_page
driver.execute_script("window.open('{}')".format(self.loginurl))
File "E:\anaconda\anaconda\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 879, in execute_script
return self.execute(command, {
File "E:\anaconda\anaconda\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 425, in execute
self.error_handler.check_response(response)
File "E:\anaconda\anaconda\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.JavascriptException: Message: javascript error: LavaMoat - property "open" of globalThis is inaccessible under scuttling mode. To learn more visit https://github.com/LavaMoat/LavaMoat/pull/360.
(Session info: chrome=111.0.5563.65)
大概解决思路:
我查了相关问题解决的方法,大多就是说把scuttling mode给disable掉,但是我这么做了依然不行(也不知道是不是我没做对)。还请帮忙解决!