我正在尝试从我的办公室环境运行一个基本的selenium脚本,它具有代理和防火墙设置.该脚本运行正常,但在每次执行之前它都会弹出一个提示“管理员禁用解压缩扩展的加载”.这意味着我必须手动点击它才能继续,这违背了自动化的目的.
我用谷歌搜索并堆栈溢出错误,看起来有一个需要禁用的chrome选项useAutomationExtension.我继续搜索python的正确语法(环境:Python 2.7-win32,运行chrome驱动程序2.30.477700(0057494ad8732195794a7b32078424f92a5fce41)),但找不到合适的chrome开关/选项.
我也研究了这个问题:来自谷歌的Chromium / Chrome切换:https://chromium.googlesource.com/chromium/src/+/master/chrome/common/chrome_switches.cc
和彼得的铬开关列表:https://peter.sh/experiments/chromium-command-line-switches/
我模糊地试过chrome_options.add_argument(‘ – disable-useAutomationExtension’),但这也没有帮助.
所以,我需要你的指导和建议.请帮忙.
Code_part:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re, os
from selenium.webdriver.chrome.options import Options
class Sel(unittest.TestCase):
def setUp(self):
# self.driver = webdriver.Firefox()
# Clean existing file before starting
#############################################
dlpath = "C:\Users\Baba\blacksheep_tracker.xlsm"
if os.path.exists(dlpath):
os.remove(dlpath)
############################################
chrome_options = Options()
chrome_options.add_argument("--cipher-suite-blacklist=0x0039,0x0033")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument('--start-maximized')
chrome_options.add_argument('--disable-useAutomationExtension')
self.driver = webdriver.Chrome(chrome_options=chrome_options)
self.driver.implicitly_wait(30)
self.base_url = "https://monsanto365.sharepoint.com/teams/XYZ_Tracker.xlsm"
self.verificationErrors = []
self.accept_next_alert = True
def test_sel(self):
driver = self.driver
## Launch the download url and wait for the download to complete
driver.get("https://monsanto365.sharepoint.com/teams/xyz_tracker.xlsm")
print 'Loading complete'
time.sleep(30)
print '30 sec over'
def is_element_present(self, how, what):
try:
self.driver.find_element(by=how, value=what)
except NoSuchElementException, e:
return False
return True
def is_alert_present(self):
try:
self.driver.switch_to_alert()
except NoAlertPresentException, e:
return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally:
self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
编辑:
我也知道他们正在研究这个问题的官方谷歌答案,它与devtools命令和东西有关.由于这是永远的,我正在寻找任何临时解决方案或建议.链接:https://bugs.chromium.org/p/chromedriver/issues/detail?id=639
最佳答案 该驱动程序在Chrome中安装了一个扩展程序,以实现一些功能,如截取屏幕截图.
可以使用useAutomationExtension选项禁用它:
from selenium import webdriver
capabilities = {
'browserName': 'chrome',
'chromeOptions': {
'useAutomationExtension': False,
'forceDevToolsScreenshot': True,
'args': ['--start-maximized', '--disable-infobars']
}
}
driver = webdriver.Chrome(desired_capabilities=capabilities)