[FIXED] Verhindert, dass Selen den Fokus auf das geöffnete Fenster legt

Ausgabe

Ich habe 40 Python-Einheitentests und jeder von ihnen öffnet einen Selenium-Treiber, da es sich um separate Dateien handelt und nicht denselben Treiber gemeinsam nutzen können.

from selenium import webdriver
webdriver.Firefox()

Die obigen Befehle bringen den Fokus auf das neu geöffnete Fenster. Wenn ich zum Beispiel mitten in meiner Arbeit an meinem Editor bin und etwas eintippe, öffnet sich plötzlich ein Selenium-Browser und Linux wechselt zu diesem Fenster. Ich bin mir nicht sicher, ob Windows oder Mac ein ähnliches Problem haben oder nicht.

Dies bedeutet, dass ich jedes Mal, wenn ich eine Einheit ausführe, meinen Computer nicht verwenden kann, da er ständig von der Anwendung abweicht, die ich gerade verwende.

Wie kann ich Selenium anweisen, nicht zum geöffneten Fenster zu wechseln?

Lösung

Hier ist ein Beispiel für die Ausführung von Selenium/Firefox unter Linux im Headless-Modus. Sie können auch verschiedene Importe sehen – ich werde sie dort lassen. Der Browser startet im Headless-Modus, geht zur ddg-Seite und druckt die Seitenquelle aus und beendet sich dann.

from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options as Firefox_Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support import expected_conditions as EC

firefox_options = Firefox_Options()

firefox_options.add_argument("--width=1280")
firefox_options.add_argument("--height=720")
firefox_options.headless = True

driverService = Service('chromedriver/geckodriver') ## path where geckodriver is

browser = webdriver.Firefox(service=driverService, options=firefox_options)
wait = WebDriverWait(browser, 20)

browser.get('https://duckduckgo.com')
print(browser.page_source)
browser.quit()

Der Browser kann auch im Headless-Modus Screenshots machen, wenn ein Komponententest dies erfordert.

Eine halbwegs gut strukturierte Dokumentation zu Selenium findet sich unter https://www.selenium.dev/documentation/ (natürlich mit einigen Lücken, aber im Großen und Ganzen anständig).


Beantwortet von –
Barry der Platipus


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like