J'essaie d'exécuter un script de base de sélénium à partir de mon environnement de bureau, qui a une configuration de proxy et de pare-feu. Le script fonctionne correctement, sauf qu'avant chaque exécution, il affiche une fenêtre contextuelle indiquant "Le chargement des extensions décompressées est désactivé par l'administrateur." Ce qui signifie que je devrai cliquer manuellement dessus pour continuer et cela défie le but de l'automatisation. entrez la description de l'image ici

J'ai cherché sur Google et j'ai dépassé l'erreur et il semble qu'il existe une option chrome useAutomationExtension qui doit être désactivée. Je suis allé à la recherche de la bonne syntaxe pour python (Environnement: Python 2.7-win32, exécutant le pilote chrome 2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41)) mais je n'ai pas trouvé le commutateur / option chrome approprié.

J'ai également examiné ceci: Commutateurs Chrome / Chrome de Google: https://chromium.googlesource.com/chromium/src/+/master/chrome/common/chrome_switches.cc et la liste des commutateurs chromés de Peter: https://peter.sh/experiments/chromium- commutateurs de ligne de commande /

J'ai vaguement essayé chrome_options.add_argument ('- disable-useAutomationExtension') mais cela n'a pas aidé non plus.

J'ai donc besoin de vos conseils et suggestions à ce sujet. Veuillez aider.

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()

Modifier : Je suis également au courant de la réponse officielle de Google à ce problème: ils y travaillent et cela a quelque chose à voir avec la commande devtools et d'autres choses. Comme cela prend une éternité, je recherche une solution ou une suggestion temporaire. Lien: https://bugs.chromium.org/p/chromedriver/ problèmes / détails? id = 639

4
S4nd33p 14 juil. 2017 à 12:22

2 réponses

Meilleure réponse

Le pilote installe une extension dans Chrome pour implémenter certaines fonctionnalités telles que la capture d'une capture d'écran.

Il est possible de le désactiver avec l'option useAutomationExtension:

from selenium import webdriver

capabilities = {
  'browserName': 'chrome',
  'chromeOptions':  {
    'useAutomationExtension': False,
    'forceDevToolsScreenshot': True,
    'args': ['--start-maximized', '--disable-infobars']
  }
}    

driver = webdriver.Chrome(desired_capabilities=capabilities)
8
Florent B. 14 juil. 2017 à 13:21
    options = webdriver.ChromeOptions()
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=driverPath)

Le code ci-dessus fonctionne pour moi.

0
Akbar 19 juin 2019 à 13:22