2015-06-03 3 views
2

Надеюсь, кто-то может помочь мне с решением моей проблемы. Я потратил большую часть дня, пытаясь найти почти все решения, которые я могу найти здесь и через Google.Selenium Webdriver - не удается нажать кнопку - элемент поиска

Я разрежу погоню. У меня есть тест, который входит в систему на одном экране. Второй экран выбирает роль и движется дальше. Я могу перейти на экран выбора роли, но не могу двигаться вперед, поскольку Selenium не будет нажимать кнопку, независимо от того, что я делаю.

Интересно, что это будет работать с IDE, но экспорт кода в java и запуск его с помощью webdriver тоже не работает. Эта часть не имеет для меня никакого смысла, поскольку я думаю, что экспорт IDE должен работать легко. Единственное различие, которое я вижу, заключается в том, что webdriver подтягивает Firefox без профилей, тогда как IDE работает в моем профиле - не уверен, что это будет иметь к этому какое-либо отношение, но захотелось выбросить его.

Единственная разница между первой кнопкой и второй кнопкой - это команда автофокусировки в HTML.

<button data-submit-button="" class="btn" autofocus="" name="submit" type="submit">Go</button> 

Я пробовал многочисленные решения, найденные по полотну и последнее, что я пытался это

new WebDriverWait(driver,120).until(ExpectedConditions.elementToBeSelected(By.name("submit"))); 
    driver.findElement(By.name("submit")).click(); 

Это не работает. Я пробовал несколько вариантов этого и большую часть времени, когда webdriver либо выходил из игры, либо пропускал этот шаг, передавая его, а затем не выполнял следующие шаги, так как страница не продвигалась вперед.

Есть ли у кого-нибудь предложения? Если у вас есть какие-либо вопросы или я могу дать вам больше информации, если я не дал достаточно! Любая помощь с этим была бы удивительной, поскольку я потратил большую часть дня, пытаясь решить эту проблему.

Спасибо!

ответ

3

Иногда селектор является основной проблемой в сценарии, подобном этому. Кроме того, name="submit" даже не очень безопасный селектор, поскольку разработчики склонны дублировать один и тот же атрибут в форме. Не зная о реальных элементах, я могу в значительной степени сказать вам, что проблема - это селектор. Если текст Go является только текст, кнопки на этой странице, дают следующие XPath выстрел

//button[@name='submit'][@type='submit'][contains(text(),'Go')] 

Полная реализация должна выглядеть следующим образом:

By xpath = By.xpath("//button[@name='submit'][@type='submit'][contains(text(),'Go')]"); 
WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
    .until(ExpectedConditions.presenceOfElementLocated(xpath)); 

myDynamicElement.click(); 
+1

Спасибо за ответ! Тем не менее, это все еще дает мне проблемы. Я получаю следующее при запуске ... Вызвано: org.openqa.selenium.InvalidSelectorException: данный селектор // button [@ name = 'submit'] [@ type = 'submit'] [содержит (текст (), 'Go')] либо недействителен, либо не приводит к использованию WebElement. Произошла следующая ошибка: InvalidSelectorError: не удалось найти элемент с выражением xpath // button [@ name = 'submit'] [@ type = 'submit'] [containsts (text(), 'Go')] из-за следующая ошибка: SyntaxError: выражение не является юридическим выражением. – automationk

+0

Прошу прощения, что в 'contains()' была опечатка. Исправлено, повторите попытку – Saifur

+1

Большое вам спасибо! Отлично. – automationk

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