【发布时间】:2017-07-14 09:22:45
【问题描述】:
我正在尝试从我的办公环境中运行一个基本的 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 和 Peter 的 chrom 开关列表:https://peter.sh/experiments/chromium-command-line-switches/
我模糊地尝试了 chrome_options.add_argument('--disable-useAutomationExtension') 但这也没有帮助。
所以,我需要您的指导和建议。请帮忙。
代码部分:
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
【问题讨论】:
标签: python google-chrome selenium selenium-webdriver selenium-chromedriver