【发布时间】:2015-04-21 15:01:42
【问题描述】:
我正在使用 watir-webdriver + ruby + rspec + gem parallel_tests。
我的测试用例必须能够取消然后从项目列表中删除项目。 “取消”和“删除”链接从弹出菜单中出现。
以下方法验证取消链接gear_dropdown_menu.cancel_job = browser.link(:text, 'Cancel') 是否可见。
Timer.repeat_until_true(30, 1) do
sleep 1
gear_dropdown_menu.cancel_job.visible?
end
当链接出现并且我可以看到它时,接下来我尝试使用这样的代码点击它:
browser.execute_script("
id = $('div.job-actions:visible').data('id');
$('a[href*=\"jobs/'+ id +'/cancel\"]').show().click()
")
div.job-actions:visible - actions popup, where links are placed
我使用 data-id 属性来指定直接链接 href。但是看起来watir看不到。
问题是当我并行执行测试时,3 次中的 2 次尝试失败。 当我执行非并行测试时,看起来总体不错。
问题的原因可能是什么?
更新:添加弹窗代码。它不是一个单独的窗口。只是当我点击一个按钮时出现的隐藏的 div 元素。
<div class="job-actions" data-id="8769" style="top: 329px; right: 0px; display: block;">
<section>
<header>Actions</header>
<ul>
<li class="pause">
<a href="http://host.com/jobs/8769/pause">Pause Job</a>
</li>
<li class="cancel">
<a href="http:/host.com/jobs/8769/cancel" class="cancel">Cancel Job</a>
</li>
</ul>
</section>
</div>
【问题讨论】:
-
我很好奇你为什么要手动滚动你自己的
wait_until_present方法?此外,发布最少量的 HTML 来复制问题(以及错误堆栈跟踪)将使人们更容易重现您的问题。 -
@orde 因为标准方法并非每次都有效。抱歉没有html。
-
但听起来您自己的方法也每次都不起作用。也许你最好仔细看看为什么 wait_until_present 不适合你?
-
WHY oh 为什么 oh 为什么你使用javascript来点击一些东西?这就是普通用户与您的系统交互的方式吗?
-
@ChuckvanderLinden 因为我不知道为什么它不起作用。是的,似乎问题不在
while_until_present方法中。还有其他建议吗?
标签: ruby firefox watir watir-webdriver qa