我在无法使用 xpath 找到元素时遇到了一些问题,如果有人可能知道问题可能是什么,我正在寻找一些输入。这是我尝试访问的元素。
<body id="tinymce">
<p>
<img class="some-class-name" src="/path/to/url" data-macro-name="macro-name" data-macro-
parameters="macro|params" data-macro-schema-version="1">
<span id="_caret" data-mce-bogus="true" style=""><u></u></span>
</p>
</body>
这是我必须找到并使用它的页面对象代码。
@FindBy(xpath = "//*[@id="tinymce"]/p/img")
private WebElement cnfGraph;
public void verifyGraphEditPresent() {
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(cnfGraph));
}
我不断收到以下错误
no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="tinymce"]/p/img"}
我也尝试将定位器更改为图像的类名或正文的 id,但没有任何选择。
任何帮助或建议不胜感激。谢谢
我能够通过将驱动程序切换到 html 所在的 iframe 来解决此问题。
public void verifyGraphEditPresent() {
driver.switchTo().frame(driver.findElement(By.id("wysiwygTextarea_ifr")));
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(cnfGraph));
driver.switchTo().defaultContent();
}
解决方案来自这里 https://stackoverflow.com/a/24254740/11865571 由@MentallyRecursive在评论中提供