watir:frame.body的内容未更新(有没有刷新方法)

时间:2015-11-24 09:09:45

标签: phantomjs watir

您好我正在使用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-webdriverphantomjs都会发生这种情况。

1 个答案:

答案 0 :(得分:0)

Watir的数量为methods for waiting

您需要找到仅在单击tr元素后才存在的元素。然后调用其中一个等待方法。例如:

browser.element.wait_until_present

或者,您也可以在点击tr后等待删除元素:

browser.element.wait_while_present