【问题标题】:Watir fails to find element intermittentlyWatir 间歇性地找不到元素
【发布时间】:2016-03-27 03:28:19
【问题描述】:

我有以下代码使用 Watir 来检查 javascript 表单上的一些框。

NBA_NORTH_AMERICA = 'https://sports.bwin.com/en/sports#leagueIds=6004&sportId=7'
MONEY_LINE = 'cat_43'
TOTALS = 'cat_48'

def method

    browser = Watir::Browser.new 
    browser.goto NBA_NORTH_AMERICA
    browser.checkbox(:id => TOTALS).parent.span.click unless browser.checkbox(:id => TOTALS).checked?
    browser.checkbox(:id => MONEY_LINE).parent.span.click unless browser.checkbox(:id => MONEY_LINE).checked? == false

    browser.divs(:class => 'layout4').each do |event|

    end
    browser.close
end

大约一半的时间它可以工作,但另一半会抛出此错误:

/var/lib/gems/1.9.1/gems/watir-webdriver-0.9.1/lib/watir-webdriver/elements/element.rb:536:in `assert_element_found': unable to locate element, using {:tag_name=>"span"} (Watir::Exception::UnknownObjectException)

在第二个复选框(Money Line)的线上。通过在 firefox 中检查,我可以看到 checkbox 和 span 元素都存在。这里发生了什么?

【问题讨论】:

    标签: ruby watir watir-webdriver


    【解决方案1】:

    通常这些是由 javascript 的异步特性引起的竞争条件。像这样添加等待:

    browser.checkbox(:id => TOTALS).when_present.checked?
    

    【讨论】:

    • 我试过这样做,但 when_present 超时(30 秒),尽管我可以清楚地看到元素在那里。
    • 它在哪里失败了复选框或在你的循环中?如果它在循环内,循环中的动作会改变页面上的内容吗?
    • 在复选框上(以及我单击以选中复选框的跨度)
    • 哦,我没看到家长。试试看:browser.checkbox(:id => TOTALS).when_present.parent.span.click
    • 嗯好像是一样的
    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2011-05-21
    • 2018-01-25
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多