2016-03-21 4 views
1

Я пытаюсь получить Firefox с Selenium WebDriver, чтобы ввести поисковый запрос в поле поиска на этом Boerse Frankfurt webpage.ElementNotVisibleException, когда Selenium WebDriver не полный экран

Я могу с успехом установить элемент сети через find_element_by_name или find_element_by_xpath, что дает <selenium.webdriver.remote.webelement.WebElement object at 0x10768e490>.

Однако при попытке очистить поле, отправить ключи, или в противном случае нажмите на него, я получаю сообщение об ошибке:

ElementNotVisibleException: Сообщение: Элемент в настоящее время не видно и поэтому не может быть взаимодействовали с

Я не знаком с этой ошибкой, так как, прежде чем при работе с селеном, так что я в недоумении, что может быть не так с моим кодом:

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: Проблема была в том, что окно драйвера не было развернуто на весь экран. См. Ответ/комментарии ниже.

ответ

1

Wait для поля поиска , чтобы стать видимым и только затем взаимодействовать с ним:

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

Он ожидает видимости элемента до появления «TimeoutException». Для невооруженного глаза элемент отображается в браузере. Может быть, есть «скрытый» элемент или такой. – Winterflags

+1

@Winterflags, это странно, это работает для меня как есть. Что делать, если вы увеличили окно браузера до перехода на страницу: 'driver.maximize_window()'? – alecxe

+0

Это решило! Хорошая находка! Я фактически установил драйвер только для использования левой половины экрана. Я бы, наверное, никогда об этом не подумал. – 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) 

первый щелчок на поле поиска и чем сделать SendKeys.

Смежные вопросы