2015-11-24 52 views
0

您好我正在使用watir进行PHP项目的黄瓜测试。 不幸的是,页面始终是由两帧构成的。watir:frame.body的内容没有更新(是否有刷新方法)

<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(:名称, “mainFrame中”) .body

给了我以前的表(双击行)。

当我试着使用PRY

pry:> @browser.frame(:name, "mainFrame").body => content of desired detail page 

它看起来像的Watir需要时间来“刷新”身体的内容进行调试。有没有办法做到“refresh”或“wait until new content is loaded”?

这与两个驱动程序watir-webdriverphantomjs发生。

回答

0

Watir的数量为methods for waiting

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

browser.element.wait_until_present 

或者,您也可以等待tr后取出一个元素被点击:

browser.element.wait_while_present