如何从html代码编写自己的xpath

时间:2016-07-21 14:27:09

标签: selenium xpath

我有以下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 &amp; 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

5 个答案:

答案 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

但是你可以通过谷歌的一些研究轻松找到你的答案......