2015-11-10 1 views
0

Я пытаюсь написать несколько автоматизированных тестов на Java с использованием селена и драйвера PhantomJS но у меня большая проблема пытается взаимодействовать с текстовым полем.Селена: Помощь отправки текста в поле в плавающем заголовке

http://www.jigsaw-online.com/ Я пытаюсь отправить текст в поле поиска, но я пробовал много различных найти на локаторы и я всегда получаю ElementNotVisibleException, когда я пытаюсь отправить ключи к полю

@FindBy(xpath="//header//form[@id='search']//input[@type='search']") 
@FindBy(xpath="//input[@name='w']") 
@FindBy(xpath="//form[@id='search']//input[@type='search']") 

I знаю, что все эти xpath правильны, потому что я могу получить от него атрибуты в тесте.

Единственное, что я могу думать о том, что если вы прокрутите страницу вниз заголовок следующим образом.

Может кто-нибудь предложить способ, которым я могу послать ключи в этой области?

+2

Довольно жесткая один, так как вы используете обезглавленный драйвер браузера ... Может быть, вы должны прокрутить его в поле зрения. Проверьте это [вопрос] (http://stackoverflow.com/questions/3401343/scroll-element-into-view-with-selenium) –

+0

Спасибо, прокрутка не исправила его, но с помощью javascript с аргументом [0 ], как в этом примере, я могу вызвать .value = на элементе и может отправлять ему ключи. –

ответ

0

id коробки Поиск на верхней части этой страницы не search, но sli_search_1.

Так простейший xpath будет //*[@id="sli_search_1"].

С другой стороны, почему бы вам не просто найти этот элемент по идентификатору? Что-то вроде:

searchBox = driver.findElement(By.Id("sli_search_1")); 
searchBox.sendKeys("hello"); 

Надеюсь, это поможет.

+0

Извините, мой xpath был немного испорчен, если вы находитесь на домашней странице или выполняете поиск, вы можете использовать немного другой xpath для получения поля. Я уже пробовал то, что вы предложили, но это не работает, попробуйте сами, вы увидите, что исключение выбрано. Мне удалось ввести текст в поле, используя javascript, поэтому я предполагаю, что мне придется использовать JS вместо –

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