【问题标题】:Access Element in Iframe with Selenium使用 Selenium 访问 iframe 中的元素
【发布时间】:2016-04-05 12:19:29
【问题描述】:

我尝试通过 XPath 访问元素,但它无法正常工作。该元素位于 IFrame 中,这可能是原因吗? 如果是这样,我需要做什么才能仍然能够访问它? 或者可能是一个问题,我嵌套了两个 html(HTML 代码图片)?有什么解决方法?

我得到的错误信息:

org.openqa.selenium.NoSuchElementException: 无法定位元素: {"method":"xpath","selector":".//*[@id='oslist']/table1/tbody/ tr2/td2/table/tbody/tr1/td/a"}
命令持续时间或超时: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

【问题讨论】:

  • 能否提供实际网址?

标签: java selenium xpath


【解决方案1】:

试试这个:

driver.switchTo().frame(0);

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

【讨论】:

  • 我试过了,但同样的错误。它没有找到 0 或 1 的帧
【解决方案2】:

您在 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 是最佳实践

【讨论】:

  • 我尝试了绝对路径和相对路径。该路径使用插件 firepath 生成 Firefox。我尝试了绝对,因为我已经分离了 iframe
  • 您可以分享您在其上查找 xpath 或 URL 的代码的屏幕截图
  • 我已经用找到 xpath 的图片调整了我的问题
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2021-03-02
    • 2023-04-02
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2020-09-08
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多