Au préalable, Chrome est déjà installé.
example.py
options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1200x600')
Service
pour démarrer plus rapidement que le démarrage normalexample.py
#Démarrage du service
service = Service(executable_path='/usr/local/bin/chromedriver')
service.start()
#Connectez-vous à Chrome
driver = webdriver.Remote(service.service_url, desired_capabilities=options.to_capabilities())
Il ne vous reste plus qu'à lancer Slenium comme d'habitude.
L'erreur suivante peut se produire dans l'environnement CUI
error.log
selenium.common.exceptions.WebDriverException: Message: unknown error: an X display is required for keycode conversions, consider using Xvfb
(Session info: headless chrome=59.0.3071.86)
(Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 4.8.0-49-generic x86_64)
Cela s'est produit lorsque j'ai exécuté la méthode sendKeys ()
.
Cela peut être évité en entrant des caractères, etc. avec JavaScript au lieu de sendKeys ()
.
Si vous obtenez une autre erreur, vous pouvez probablement l'éviter en exécutant JavaScript.
example.py
# driver.get_element_by_css_selector('hoge').sendKeys('fuga')Déclenche une exception
def _set_value_for_element(selector: str, value: str):
return 'document.querySelector("{selector}").setAttribute("value", "{value}")'.format(selector=selector, value=value)
driver.get(url)
# sendKeys()J'obtiens une exception lorsque j'exécute JS
driver.execute_script(_set_value_for_element(user_name_selector, user_name))
driver.execute_script(_set_value_for_element(user_password_selector, user_password))
driver.find_element_by_css_selector(login_button_selector).click()
Recommended Posts