Поиск элемента и вход в рубиновый селен - PullRequest
0 голосов
/ 18 октября 2019

Я новичок в мире селена, рубина и огурца / корнишонов и пытаюсь с помощью простого сценария перейти на страницу Google, найти строку поиска и ввести слово, нажать клавишу ввода или найти элемент "Поиск Google" инажмите кнопку.

Это файл Ruby, но он отформатирован в Gherkins, так как я работаю с ним.

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome

Given(/^I am on the Google website$/) do
  driver.navigate.to "http://www.google.com"
end

When(/^search is entered$/) do
  search = driver.find_element(xpath: "//div[@class = 'jhp big']//input[@class = 'gLFyf gsfi']")
  search.send_keys "this"
end

Then(/^confirm$/) do
  puts "Confirmed"
  driver.close
end

Итак, я перехожу на сайт Google, используя Selenium WebDriver, инициализированный как драйвер. Затем найдите элемент с помощью xpath и отправьте слово «this».

Когда я запускаю это, я получаю эту ошибку:

Selenium::WebDriver::Error::NoSuchElementError: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class = 'jhp big']//input[@class = 'gLFyf gsfi']"}

Также, чтобы нажать «ввод», я могу либо сделать send_keys: введите или найдите кнопку поиска и используйте «щелкнуть» правильно?

Заранее спасибо

1 Ответ

1 голос
/ 18 октября 2019

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

require 'selenium-webdriver'
driver=Selenium::WebDriver.for :chrome
driver.navigate.to("https://www.google.com/")
driver.manage.timeouts.implicit_wait=10
driver.find_element(name: 'q').send_keys 'raja'
driver.find_element(name: 'btnK').click

Но помните, если вы WATIR, который является оберткой вокруг селена, связывающего этивид ожидания автоматический.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...