使用Selenium访问iframe中的元素

时间:2015-12-31 14:40:30

标签: java selenium xpath

我尝试通过XPath访问一个元素,但它不能以某种方式工作。元素在IFrame中,可能是这个原因吗? 如果是这样,我还需要做什么才能访问它? 或者可能是一个问题,我嵌套了两个HTML(HTML代码图片)?什么是解决方法呢?

我得到的错误消息:

  

org.openqa.selenium.NoSuchElementException:无法找到元素:{“method”:“xpath”,“selector”:“.//* [@ id ='oslist'] / table 1 / TBODY / TR 2 / TD 2 /表/ tbody的/ TR 1 / TD /一个“}
  命令持续时间或超时:1.14秒

Java代码:

 @Test
 public void testGenerierter() throws Exception {

     driver.findElement(By.id("cmdSigOn")).click();
     driver.findElement(By.id("k278")).click();
     driver.findElement(By.id("k279")).click();
     driver.findElement(By.id("k332")).click();
     Thread.sleep(3000);
     driver.switchTo().frame("1");

     Thread.sleep(3000);
     driver.findElement(By.xpath(".//*[@id='oslist']/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[1]/td/a"));
     driver.findElement(By.id("LogoutButton")).click();

}

HTML Code

XPath from Firefox

3 个答案:

答案 0 :(得分:2)

试试这个:

driver.switchTo().frame(0);

您传递的是整数,因此不需要双引号。并尝试验证正确的iframe索引号和随后的xpath。

答案 1 :(得分:0)

您在xpath上遇到异常,这意味着您在第driver.findElement(By.xpath(".//*[@id='oslist']/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[1]/td/a"));

上收到错误
@Test
public void testGenerierter() throws Exception {

 driver.findElement(By.id("cmdSigOn")).click();
 driver.findElement(By.id("k278")).click();
 driver.findElement(By.id("k279")).click();
 driver.findElement(By.id("k332")).click();
 Thread.sleep(3000);
 driver.switchTo().frame(1);
   Thread.sleep(3000);
 driver.findElement(By.xpath("Give the Relative xpath here"));
 driver.findElement(By.id("LogoutButton")).click();

}

PS:你为什么使用绝对xpath。相对xpath是最好的做法

答案 2 :(得分:0)

好的,这是解决方案。我采用Webelement

的方法
driver.switchTo().frame(driver.findElement(By.name("1")));