Ich bin mit Splitter (v0.7.3) für Web-Test unter Linux, während auf Chrom kann der Standardbeispielcode nicht ausgeführt wird:splinter: wie chrome optionen hinzufügen?
from splinter import Browser
from pyvirtualdisplay import Display
d = Display(visible=0, size=(800, 600))
d.start()
b = Browser('chrome')
b.visit('http://www.google.com')
b.quit()
d.stop()
Beim Laufen, bekam ich die Ausnahme wie folgt aus:
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
Und ich testen Sie die gleiche Funktion in Selen mit einigen Chrom Option hinzugefügt:
from selenium import web driver
from selenium.webdriver.chrome.options import Options
from pyvirtualdisplay import Display
d = Display(visible=0, size=(800, 600))
d.start()
opt = Options()
opt.add_argument('--disable-setuid-sandbox')
b = webdriver.Chrome(chrome_options=opt)
b.get('http://www.google.com')
b.quit()
d.stop()
Dies funktioniert ok, der Unterschied ist die --disable-setuid-sandbox
Option hinzugefügt, um Chrome-Treiber, wenn die Option nicht hinzufügen, wäre ein Zombie chrome-sandbox
Prozess unter chromium-browser
.
Das Problem hier ist, ich weiß nicht, wie eine chrome.options.Option
Instanz splinter.Browser()
passieren, durchsucht ich die Umsetzung unter splinter/driver/webdriver/chrome.py
, so scheint es, dass es keinen Eintrag, eine solche Instanz splinter.Browser()
passieren. Gibt es eine andere Möglichkeit, Optionen an den Chrome-Treiber zu übergeben?
Würdest du mir den Link zeigen? Ich habe den Splitter [doc] (https://splinter.readthedocs.io/en/latest/index.html) durchsucht, es gibt eine 'sented_capabilities', aber nur für Firefox, leider sind die' chrome_options' für meinen aktuellen nicht verfügbar Splitterversion (0.7.3). – coanor
@coanor Es ist in der Dokumentation für Remote WebDiver (https://splinter.readthedocs.io/en/latest/drivers/remote.html) Ich denke nicht, dass es sich von der Chrome WebDriver unterscheiden wird, da es eine erstellt Instanz derselben Browser-Klasse. Hast du meinen Vorschlag versucht? – RemcoW
@coanor Hier ist der Quellcode für die Browser-Klasse https://github.com/cobrateam/splinter/blob/master/splinter/browser.py. Wie Sie sehen können, macht es wenig mehr als einen ChromeWebDriver zu erstellen und die * Argumente und ** Kwargs zu übergeben. Das heißt, Sie können die Argumente übergeben, die vom Selen WebDriver verwendet werden, der hier ist https://github.com/SeleniumHQ/selenium/blob/master/py/selenium/webdriver/chrome/webdriver.py#L34 – RemcoW