2016-03-21 9 views
1

Ich versuche Firefox mit Selenium WebDriver zu bekommen, um eine Suchanfrage in das Suchfeld auf dieser Boerse Frankfurt webpage einzugeben.ElementNotVisibleException wenn Selenium WebDriver nicht Vollbild ist

Ich kann das Bahnelement erfolgreich über find_element_by_name oder find_element_by_xpath lokalisieren, was <selenium.webdriver.remote.webelement.WebElement object at 0x10768e490> ergibt.

Wenn jedoch zu klar das Feld versucht, Schlüssel zu senden, oder sonst ist es klicken, erhalte ich die Fehlermeldung:

ElementNotVisibleException: Nachricht: Element ist nicht sichtbar und so nicht sein kann interagierte mit

ich mit diesem Fehler nicht vertraut bin vor da, wenn sie mit Selen arbeiten, so dass ich bei einem Verlust bin, was mit meinem Code falsch sein kann:

driver.get("http://en.boerse-frankfurt.de/") 

search_string = "test" 

search_box = driver.find_element_by_xpath(".//*[@id='searchvalue']") 
search_box.send_keys(search_string) 
search_box.send_keys(Keys.RETURN) 

Edit: Das Problem hier war in der Tat, dass die Fahrer Fenster nicht auf Vollbild maximiert wurden. Siehe Antwort/Kommentare unten.

Antwort

1

Wait für das Suchfeld zu sichtbar werden und erst dann mit ihr zu interagieren:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 


driver = webdriver.Firefox() 
driver.get("http://en.boerse-frankfurt.de/") 

search_string = "test" 

wait = WebDriverWait(driver, 10) 
search_box = wait.until(EC.visibility_of_element_located((By.ID, "searchvalue"))) 

search_box.clear() 
search_box.send_keys(search_string) 
search_box.send_keys(Keys.RETURN) 
+0

Es wartet auf die Sichtbarkeit des Elements, bis 'TimeoutException' auftritt. Für das bloße Auge ist das Element im Browser sichtbar. Vielleicht gibt es ein "verstecktes" Element oder so. – Winterflags

+1

@Winterflags das ist seltsam, es funktioniert für mich wie es ist. Was wäre, wenn Sie das Browserfenster maximieren würden, bevor Sie zur Seite navigieren: 'driver.maximize_window()'? – alecxe

+0

Das hat es gelöst! Guter Fund! Ich hatte den Treiber tatsächlich so eingestellt, dass er nur die linke Hälfte des Bildschirms ausnutzte. Daran hätte ich wahrscheinlich nie gedacht. – Winterflags

0
driver.get("http://en.boerse-frankfurt.de/") 
//make some wait here to fully load the browser. 

driver.find_element_by_xpath(".//*[@id='searchvalue']").click() 
search_box.send_keys(search_string) 

klicken Sie zuerst auf Suchfeld und als tun Tastaturbefehle.

Verwandte Themen