51Testing软件测试论坛

标题: 求助:selenium2.0 中xpath的使用 [打印本页]

作者: liran_04    时间: 2012-9-21 16:14
标题: 求助:selenium2.0 中xpath的使用
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>夫妇夫妇凤飞飞发</title>
</head>
<body>
<div class="top">
     <iframe id = topLoginiframe>
       <html>
              <head>
                     .................
               </head>
               <body>
                        <form id = login>
                                 <input id = account>
                                   <input id = password>
               </body
>

<div class="middle">
</div>
</body>
</html>

类似在一个html脚本中:
WebDriver driver = new InternetExplorerDriver ();
diver.findElement(By.xpath("//iframe[@id='topLoginiframe']//input[@id=login]"));
提示我找不到路径,为什么呢?是selenium2.0 不能找到嵌套在html中的内容吗?
selenium 1.0 是可以找到的
作者: yazi0127    时间: 2012-12-27 09:33
要先selectFrame,然后再用xpath.
作者: 六月天    时间: 2012-12-27 11:03
楼上那个说错了。
首先,既然要找的元素在iframe里面,不管selenium 1还是2都是找不到的。必须在定位之前做frame的切换。
之所以说楼上的说错了,是因为楼上用的方法是selenium 1的方法,而楼主问的是WebDriver的方法。
Webdriver中切换frame的方法是使用switchTo。按照楼主的例子,在:
diver.findElement(By.xpath("//iframe[@id='topLoginiframe']//input[@id=login]"));
之前插一句切换frame:
driver.switchTo().frame(driver.findElement(By.id("topLoginiframe")));
然后把原来的改成:
diver.findElement(By.id("login"));
这样100%能找到。
如果要跳回原来的外层frame,那就用:
driver.switchTo().defaultContent();
作者: bob123654    时间: 2013-2-5 17:30
3楼的回答很正确 六月天技术不错啊




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2