Voraussetzung ist, dass Chrome bereits installiert ist.
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')
example.py
#Dienststart
service = Service(executable_path='/usr/local/bin/chromedriver')
service.start()
#Stellen Sie eine Verbindung zu Chrome her
driver = webdriver.Remote(service.service_url, desired_capabilities=options.to_capabilities())
Alles was Sie tun müssen, ist Slenium wie gewohnt auszuführen.
Der folgende Fehler kann in der CUI-Umgebung auftreten
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)
Es passierte, als ich die Methode "sendKeys ()" ausführte. Dies kann vermieden werden, indem Zeichen usw. mit JavaScript anstelle von "sendKeys ()" eingegeben werden. Wenn Sie einen anderen Fehler erhalten, können Sie ihn wahrscheinlich vermeiden, indem Sie JavaScript ausführen.
example.py
# driver.get_element_by_css_selector('hoge').sendKeys('fuga')Löst eine Ausnahme aus
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()Ich erhalte eine Ausnahme, wenn ich JS ausführe
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