Ruby / Watir: как нажать на отключенную кнопку (Watir :: Exception :: ObjectDisabledException) - PullRequest
0 голосов
/ 12 октября 2019

Я хочу создать программу на Ruby, которая создаст репозиторий github. Все в порядке, но когда я хочу нажать кнопку «создать хранилище» после заполнения имени хранилища, ничего не происходит, и программа останавливается с ошибкой тайм-аута.

Это HTML-код отключенной кнопки:

<button type="submit" class="btn btn-primary first-in-line" data-disable-with="Creating repository…" disabled="">
        Create repository
      </button>

И html-код включенной кнопки:

<button type="submit" class="btn btn-primary first-in-line" data-disable-with="Creating repository…">
        Create repository
      </button>

А это моя рубиновая программа

repo_name = gets.chomp
repo = browser.text_field(id: 'repository_name')
repo.set(repo_name)

browser.driver.manage.timeouts.implicit_wait = 3

create_button = browser.button(type: "submit")
create_button.wait_until(&:enabled?).click

Я почти уверен, что мой pb приходитчто, когда я приземляюсь на странице, кнопка отключена, и даже если я заполняю ввод repository_name, моя прога не может получить доступ к кнопке.

Так что у вас есть решение по этому поводу? ? Или, может быть, вы знаете, есть ли другой pb?

Редактировать:

Когда здесь код без команд ожидания:

repo_name = gets.chomp
repo = browser.text_field(id: 'repository_name')
repo.set(repo_name)

create_button = browser.button(type: "submit").click

И когда я его запускаюЯ получил ошибку 'Watir :: Exception :: ObjectDisabledException'

("element present, but timed out after 30 seconds, waiting for #
<Watir::Button: located: true; {:type=>"submit", :tag_name=>"button"}> to be enabled (Watir::Exception::ObjectDisabledException)"

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Проблема в том, что на странице есть несколько кнопок отправки. Вы можете увидеть это, получив набор кнопок:

# Button text:
browser.buttons(type: 'submit').map(&:text_content)
#=> ["Set status", "Sign out", "Create repository"]

# Disabled status:
browser.buttons(type: 'submit').map(&:disabled?)
#=> [true, false, false]

browser.button(type: "submit") возвращает первую кнопку отправки на странице, которая является отключенной кнопкой «Установить статус».

Кнопка «Создать хранилище» на самом деле является последней на странице. Требуется более конкретный локатор для кнопки. Некоторые варианты:

# By text
browser.button(text: 'Create repository')

# By visibility (since the other 2 are hidden by default)
browser.button(type: "submit", visible: true)
0 голосов
/ 17 октября 2019

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

browser.text_field(id: 'repository_name').set("repo_name")
browser.send_keys(:tab)

И, как упоминал Джастин в своем ответе, нажмите кнопку создания репозитория, как показано ниже:

browser.button(type: "submit", visible: true).click 
...