【问题标题】:unable to locate element with Watir webdriver, Firefox, PayPal sandbox pay with PayPal无法使用 Watir webdriver、Firefox、PayPal 沙箱定位元素 使用 PayPal 付款
【发布时间】:2016-04-22 17:51:33
【问题描述】:

我收到了错误

Watir::Exception::UnknownObjectException: unable to locate element, using 
{:id=>"submitLogin", :tag_name=>"input"} 
from /Users/ktobo/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/
gems/watir-webdriver-0.9.1/lib/watir-webdriver/elements/element.rb:536:in 
`assert_element_found'

在使用 Watir webdriver 和 Firefox 运行 Rspec 测试时。

# select "Pay with my PayPal account"
@browser.span(:class, 'buttonAsLink').when_present.click
@browser.text_field(:id, 'login_email').when_present(15).set(hsh[:email])
@browser.text_field(:id, 'login_password').when_present(15).set(hsh[:password])
@browser.input(:id, 'submitLogin').when_present.when_enabled.click
@browser.input(:id, 'continue').when_present.click

如果我在控制台中一个一个地执行这些步骤,一切都很好。使用 run.rb 运行测试时,第一次单击操作似乎无法选择“使用我的 PayPal 帐户付款”范围。我不确定为什么它在这一步没有失败。如果我在失败后手动单击该链接,我会看到密码字段未填充,因此在第四行之前似乎出现了问题。

【问题讨论】:

    标签: paypal rspec watir watir-webdriver


    【解决方案1】:
    1. 即使使用when_present 调用,如果它在 irb 中逐步工作,这很可能是一种竞争条件,但在直接一起运行时不会。在调试时,在问题步骤之前放置一个(长时间的)睡眠通常很有用,只是为了看看你是否遇到了竞争条件。如果睡眠修复了它,那么您就知道问题出在哪里了,只需要在点击之前找出正确的等待时间。

    2. 另一种可能性是,这可能是一个问题,即浏览器处于操作系统的“活动窗口”中很重要。 (无论如何,命令应该以相同的方式工作,但情况并非总是如此)。

    3. 此外,使用 Chrome 运行测试以查看您是否有同样的问题也有助于排除故障。

    如果这些都不起作用,请使用您正在与之交互的 url 或 html 更新您的问题。

    另一方面,我很惊讶嵌套 when_presentwhen_enabled 有效。 when enabled 可能应该包含 present? 作为先决条件,我会考虑这样做。

    【讨论】:

    • 添加长时间睡眠让我发现了问题。选择跨度buttonAsLink 在两种付款方式之间切换。我需要选择 div id="method-paypal",无论当前选择哪个 div id="method-paypal"id="method-cc",它都有效。我也切换到when_enabled,它工作正常。
    猜你喜欢
    • 2021-10-04
    • 2021-08-31
    • 2014-04-23
    • 2016-10-27
    • 1970-01-01
    • 2023-03-30
    • 2011-04-21
    • 2014-03-23
    相关资源
    最近更新 更多