frame一直是一个让自动化测试工程师极其头疼的问题,尤其是watir针对iframe总是有些奇怪的问题,并且针对那些不太明白html的人来说,frame也确实比较难以理解。我简单说明一下,frame简单的说就是在一个页面里可以套用其他的页面,但是可能我们在看页面的时候没有什么感觉,基本看不出来。但是在做自动化测试的时候,就一定要关注Frame,比方说页面里面有个frame,在这个frame里包含一个其他的页面,包含一个文本框,我们要向这个文本框里写内容要写成
b.frame(:id=>"frame1").text_field(:id=>"name").set "rex"
注意这里一定要带着frame,而其他情况,不必要这种硬性的层级关系;这种情况下如果你在查看空间的时候没有加入frame的话,一般就会报空间找不到的错误。
在watir-webdriver里面定位frame也比较简单,就像上面用到的方法:
b.frame(:id => "content_ifr").send_keys "hello world"
这里有一个测试用的实例,可以试验一下:
#iframe.html
<html> <head> <title>Frame test</title> </head> <body> <p id = "p">Outside frame</p> <iframe id = "f_1" f1" src = "iframe-part1.html"></iframe> </body> </html>
#iframe-part1.html
<html> <head> <title>iframe_part1</title> </head> <body> <p> -000000- </p> <input type="text" name="fname" /> </body> </html>