您好我正在使用watir进行PHP项目的黄瓜测试。 不幸的是,页面总是来自两个框架。
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=7">
<title>Rothschild - Olomouc</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/skripty.js"></script>
</head>
<frameset cols="183,*" frameborder="NO" border="0" framespacing="0" rows="*">
<frame name="leftFrame" scrolling="AUTO" noresize src="">
<frame name="mainFrame" src="getuser.php">
</frameset>
<noframes>
<body id=body bgcolor="#FFFFFF" text="#000000">
</body>
</noframes>
</html>
leftFrame
是菜单,
mainFrame
是主要页面内容。
我用
if headless
@browser = Watir::Browser.new :phantomjs #headless
else
require 'watir-webdriver'
@browser = Watir::Browser.new :ie #non headless,IExplorer
end
main_content= @browser.frame(:name, "mainFrame").body
获取页面主要部分的内容。 它几乎每次都有效。
但现在我在双击TR
<tr class="subTable dealer_1" onDblClick="window.location.href='detail_dealer.php?id=207'">
<td><a name="a207"></a></td>
<td> Lama Mirek</td>
<td> Ústí n. Orlicí</td>
<td></td>
</tr>
让我转到detail_dealer.php?id=207
页面(当然在mainFrame
)
但是
@ browser.frame(:name,“mainFrame”)。body
给我上一张桌子(双击行)。
当我尝试使用PRY
进行调试时pry:> @browser.frame(:name, "mainFrame").body => content of desired detail page
看起来watir需要一段时间来“重新加载”身体的内容。是否有一些方法可以执行“refresh
”或“wait until new content is loaded
”?
驱动程序watir-webdriver
和phantomjs
都会发生这种情况。
答案 0 :(得分:0)
Watir的数量为methods for waiting。
您需要找到仅在单击tr
元素后才存在的元素。然后调用其中一个等待方法。例如:
browser.element.wait_until_present
或者,您也可以在点击tr
后等待删除元素:
browser.element.wait_while_present