什么是python相当于selenium的useAutomationExtension?

时间:2017-07-14 09:22:45

标签: python google-chrome selenium selenium-webdriver selenium-chromedriver

我正在尝试从我的办公室环境运行基本的selenium脚本,该环境具有代理和防火墙设置。该脚本运行正常,除非在每次执行之前它都会弹出一个弹出文件"管理员禁用加载解压缩的扩展名。"这意味着我必须手动点击它才能继续,这违背了自动化的目的。 enter image description here

我用谷歌搜索并堆栈溢出错误,看起来有一个需要禁用的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

3 个答案:

答案 0 :(得分:7)

该驱动程序在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)

答案 1 :(得分:0)

    options = webdriver.ChromeOptions()
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=driverPath)

上面的代码对我有用。

答案 2 :(得分:0)

options.add_experimental_option('useAutomationExtension', False)