Ruby / Watir:如何点击禁用的按钮(Watir::Exception::ObjectDisabledException)
Ruby / Watir : how to click on a disabled button (Watir::Exception::ObjectDisabledException)
我想在 Ruby 中创建一个程序来创建 github 存储库。一切正常,但是当我想在填写存储库名称后单击按钮 'create repository' 时,没有任何反应,程序因超时错误而停止。
这是禁用按钮的 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>
这是我的 ruby 程序
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)"
我认为以下代码可能适合您
browser.text_field(id: 'repository_name').set("repo_name")
browser.send_keys(:tab)
正如贾斯汀在他的回答中提到的那样,单击下面的创建存储库按钮:
browser.button(type: "submit", visible: true).click
问题是页面上有多个提交按钮。您可以通过检索按钮集合来查看:
# 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")
returns页面第一个提交按钮,也就是禁用的"Set status"按钮。
"Create repository" 按钮实际上是页面上的最后一个按钮。需要一个更具体的按钮定位器。部分选项:
# By text
browser.button(text: 'Create repository')
# By visibility (since the other 2 are hidden by default)
browser.button(type: "submit", visible: true)
我想在 Ruby 中创建一个程序来创建 github 存储库。一切正常,但是当我想在填写存储库名称后单击按钮 'create repository' 时,没有任何反应,程序因超时错误而停止。
这是禁用按钮的 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>
这是我的 ruby 程序
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)"
我认为以下代码可能适合您
browser.text_field(id: 'repository_name').set("repo_name")
browser.send_keys(:tab)
正如贾斯汀在他的回答中提到的那样,单击下面的创建存储库按钮:
browser.button(type: "submit", visible: true).click
问题是页面上有多个提交按钮。您可以通过检索按钮集合来查看:
# 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")
returns页面第一个提交按钮,也就是禁用的"Set status"按钮。
"Create repository" 按钮实际上是页面上的最后一个按钮。需要一个更具体的按钮定位器。部分选项:
# By text
browser.button(text: 'Create repository')
# By visibility (since the other 2 are hidden by default)
browser.button(type: "submit", visible: true)