首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用selenium测试ui交互的问题

使用selenium测试ui交互的问题
EN

Stack Overflow用户
提问于 2013-11-26 05:38:41
回答 1查看 207关注 0票数 1

我正在处理问题单元,使用Selenium测试UI交互,通过Ruby使用Selenium的Ruby和Test::Unit。这在很大程度上是成功的,但我遇到了一个无法工作的测试案例。我需要做的是等待表在页面上加载,然后循环遍历,然后用sorting类单击表标题,记录表的第一行并将其与第一行post单击比较。跳过没有sorting类的标头,并确定所有可排序的标头是否在浏览器中工作。

现在问题来了。测试在Selenium超时时失败了assert_nothing_raised测试。哪里?我不知道。它引用了[test_cases/tc_commodities.rb:6],但是第6行是assert_nothing_raised do。既然测试开始于此,信息就不多了。然后,我开始通过删除代码来缩小代码中的范围。问题在columns.each循环中,这意味着wait.until块。这是没有意义的,因为我可以看到在超时期间显示在页面上的标题。页关闭,测试失败。我再次运行测试,停止执行并查看DOM。所有正确的元素都在那里并正在显示。剧本有足够的时间把它们捡起来。可以肯定的是,我输入了一个sleep 15。仍然超时等待头显示。

  1. 为什么这个时间不确定了?对于页面上显示的项,我从未遇到过不返回true for .displayed的问题吗?
  2. 这是这个测试用例的最佳方法吗?有人能提出更好的解决方案吗?

失败测试输出

代码语言:javascript
复制
$ ruby test_cases/tc_commodities.rb
Run options:

# Running tests:

Column Found
F

Finished tests in 46.652411s, 0.0214 tests/s, 0.0214 assertions/s.

  1) Failure:
test__sort_columns_on_stories_table(TestCommodities) [test_cases/tc_commodities.
rb:6]:
Exception raised:
<#<Selenium::WebDriver::Error::TimeOutError: timed out after 10 seconds>>.

1 tests, 1 assertions, 1 failures, 0 errors, 0 skips

Selenium代码

代码语言:javascript
复制
def test__sort_columns_on_stories_table
    assert_nothing_raised do
        @browser.get 'some url'
        @wait.until do
            @browser.find_element(:css, "#dataTable tbody tr:nth-child(2)").displayed?
        end

        columns = @browser.find_elements(:css, "#dataTable thead th.sorting")

        columns.each do |column|
            puts "Column Found"

            @wait.until do
                column.displayed?                   
            end

            puts "Column Displayed"

            first_story_before = @browser.find_element(:css, "#dataTable tbody tr:nth-child(1)").attribute('id')
            column.click
            first_story_after = @browser.find_element(:css, "#dataTable tbody tr:nth-child(1)").attribute('id')

            assert_not_equal(first_story_after, first_story_before)
        end
    end
end

编辑

我正在使用Chrome和Firefox Web驱动程序。两者都有相同的问题。我可以为wait.until删除column.displayed?,但是它会抛出一个错误,当它清楚地显示在页面上时,它不会显示出来。

EN

回答 1

Stack Overflow用户

发布于 2013-11-26 18:30:26

我还面临着类似的问题,比如TimeTime out异常,等待页面加载。但页面已全部加载。

您使用的是哪个浏览器?如果是IE,IEDriverServer的版本是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20209319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档