【发布时间】:2019-12-03 23:51:54
【问题描述】:
我在使用 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,但没有任何反应。
感谢任何帮助或建议。谢谢
【问题讨论】:
-
您的开始正文标签缺少
>,这是一个错字还是代码实际上是这样的?你也检查过 iframe 吗?您是否尝试过使用'而不是\"? -
是一种类型,已更新。进一步查看 html,我可以看到所有这些都在 iframe 中。将尝试将 xpath 定位器中的语法更改为 ' 并查看是否有帮助
-
如果代码在 iframe 中,您需要将驱动程序上下文切换到该 iframe,您的原始 xpath 可能会正常工作。见此链接:stackoverflow.com/a/24254740/11865571
-
github.com/SeleniumHQ/selenium/issues/4385 建议你需要使用 ExpectedConditions.visibilityOfElementLocated
-
切换到 iframe 解决了我的问题,感谢您提供的信息,这是一次宝贵的经验教训!
标签: java selenium selenium-webdriver