我有以下HTML代码,并希望文本“Analytics& Research”
的X路径 socket.on('startRecording',function () {
var response;
logsRecording(function (filename) {
response = filename;
return response;
//socket.emit('filename',filename);
});
我正在使用chrome跟踪<div id="LLCompositePageContainer" class="column-wrapper">
<div id="compositePageTitleDiv">
<h1 class="page-header">Analytics & Research</h1>
</div>
,但这不起作用。
xpath
这是我的代码
//*[@id="compositePageTitleDiv"]
并且出现以下错误
线程“main”中的异常org.openqa.selenium.NoSuchElementException: 无法找到xpath ==的元素 // DIV [@ ID = 'LLCompositePageContainer'] /格[@ ID = 'compositePageTitleDiv'] / H1 [@类= '页头'] (警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:10.34秒有关此文档 错误,请访问: http://seleniumhq.org/exceptions/no_such_element.html
答案 0 :(得分:0)
这是如何使用的:
WebElement element= driver.findElement(By.xpath("//*[@id='compositePageTitleDiv']"));
或者如果它是嵌套的,也可以这样访问
WebElement element = driver.findElement(By.xpath("//html/body/div[3]/div[3]/"));
这只是一个粗略的语法。
答案 1 :(得分:0)
如果您只需使用Xpath
找到元素,则无需在此使用By.id()
。假设正在使用Java
,您应该尝试如下: -
WebElement el = drive.findElement(By.id("compositePageTitleDiv"));
String text = el.getText();
已修改: - 如果找不到元素,可能需要实施WebDriverWait
等待元素的时间问题,直到页面上显示如下: -
WebDriverWait wait = new WebDriverWait(webDriver, implicitWait);
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("compositePageTitleDiv")));
String text = el.getText();
注意: - 如果您的元素位于任何框架内,则需要在找到元素之前切换该框架: - driver.switchTo().frame("your frame name or id");
希望它有所帮助.. :)
答案 2 :(得分:0)
请尝试使用以下xpath:
driver.findElement(By.xpath(".//div[@id='compositePageTitleDiv']/h1")).getText();
如果元素在iframe中。然后使用以下代码:
// Switching to the frame
driver.switchTo().frame(<name>);
// Storing the value of the Analytics & Research
String text = driver.findElement(By.xpath(".//div[@id='compositePageTitleDiv']/h1")).getText();
// Switching back to original window
driver.switchTo().defaultContent();
希望这有帮助。
答案 3 :(得分:0)
您也可以使用
//div[@id='LLCompositePageContainer']/div[@id='compositePageTitleDiv']/
h1[contains(text(),'Analytics')]
这是到达特定Web元素的最佳方法,使用包含会尽量减少出错的机会。
答案 4 :(得分:-1)
正确的xpath是
bind
但是你可以通过谷歌的一些研究轻松找到你的答案......