Selenium Webdriver не может найти элемент «навигация» в Ruby

#ruby #selenium #selenium-webdriver

Вопрос:

Я новичок в этом, так что это может быть очевидно, но я изо всех сил пытаюсь заставить свой тест запустить элемент «навигация». Или Возражать. Что бы это ни было. Вот мой код:

 require "selenium-webdriver"
require "rspec"

# TEST: Sign up for blog
describe "Blog application" do
  describe "signup to the blog application" do
    it "confirm that a user can successfully signup" do
        driver = Selenium::WebDriver::Firefox
        # Go to signup form
        driver.get "https://selenium-blog.herokuapp.com/signup"
        # Fill out and submit form
        username_field = driver.find_element(id: 'user_username')
        username_field.send_keys("user")
 

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

Я также пробовал запускать его с:

 driver.navigate.go
 

и это тоже не удается. Говорит, что не может найти элемент «навигация».

Спасибо за вашу помощь!

Ответ №1:

Вам не хватает инициализации нужного веб-драйвера. Однако вы не опубликовали свою текущую версию selenium, поэтому я предположил, что это последняя версия.
Вот о чем говорится в документации Selenium::WebDriver .

 .for(browser) ⇒ Driver
.for(browser, opts) ⇒ Driver
 

Создайте новый экземпляр драйвера с правильным мостом для данного браузера
Один специальный аргумент не передается мостам :слушатель. Вы можете передать прослушиватель для этой опции, чтобы получать уведомления о событиях WebDriver. Переданный объект должен отвечать на #вызов или реализовывать методы из AbstractEventListener.

Поэтому в вашем случае вам нужно изменить переменную драйвера

 driver = Selenium::WebDriver.for(:firefox)
# ...
 

Документы WebDriver

Комментарии:

1. Хорошо, я обновил свой скрипт, и теперь он выдает мне эту ошибку: Сбой/Ошибка: драйвер = Selenium::WebDriver.для(:firefox) ArgumentError: неверное количество аргументов (задано 1, ожидается 0)

2. Вот как сейчас выглядит сценарий: <br>require "selenium-webdriver"<br/> require "rspec"<br/> <br/> # TEST: Sign up for blog describe "Blog application" do describe "signup to the blog application" do it "confirm that a user can successfully signup" do driver = Selenium::WebDriver.for(:firefox) # Go to signup form driver.navigate.to "https://selenium-blog.herokuapp.com/signup" # Fill out and submit form username_field = driver.find_element(id: 'user_username') username_field.send_keys("user")

3. пожалуйста, опубликуйте свою версию selenium. Его можно найти в файле Gemfile (если указано) или в файле Gemfile.lock

Ответ №2:

Вот простой код, который должен вам помочь

 require 'selenium-webdriver'

driver=Selenium::WebDriver.for :firefox

driver.navigate.to("https://www.google.com/")