我尝试通过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();
}
答案 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")));