2016-07-21 88 views
-2

我followig HTML代碼,並且希望X路徑文本「分析&研究」我怎麼能寫我自己的XPath從HTML代碼

<div id="LLCompositePageContainer" class="column-wrapper"> 
    <div id="compositePageTitleDiv"> 
     <h1 class="page-header">Analytics &amp; Research</h1> 
</div> 

我正在使用Chrome以下xpath,但沒有工作。

//*[@id="compositePageTitleDiv"] 

這是我的代碼

WebElement header = driver.findElement(By.xpath("//div[@id='LLCompositePageContainer']/div[@id='compositePageTitleDiv']/h1[@class='page-header']"));   

String header2 = header.getText(); 

System.out.println(header2); 

和下面的錯誤我得到

異常線程 「main」 org.openqa.selenium.NoSuchElementException: 無法找到與元素xpath == // div [@ id ='LLCompositePageContainer']/div [@ id ='compositePageTitleDiv']/h1 [@ class ='page-header'] (警告:服務器沒有提供任何堆棧跟蹤信息) 命令持續時間或超時:10.34秒有關此 錯誤文檔,請訪問: http://seleniumhq.org/exceptions/no_such_element.html

+0

看看這個:http://stackoverflow.com/questions/24212548/how-to-get-the-absolute-xpath-for-an-element-within-firebug –

+0

不幸的是我不能用戶Firefox或螢火蟲到期在IT策略,由於 – Amol1981

+1

請界定「沒有工作」,提供您的相關代碼,您收到錯誤消息/行爲。 – OCary

回答

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(); 

希望這會有所幫助。

+0

完美,它的工作,謝謝。 – Amol1981

+0

@ Amol1981,不客氣。你能把這個標記爲答案嗎? –

-1

正確的XPath是

//div[@id='LLCompositePageContainer'] 
    /div[@id='compositePageTitleDiv'] 
    /h1[@class='page-header'] 

但你可以有一些期試驗研究很容易地找到你的答案在谷歌...

+0

謝謝,我看你怎麼製作的X路,我用同樣的但didnt工作,你知道用,我可以學寫X路徑的任何教程? – Amol1981

0

這是如何使用:

WebElement element= driver.findElement(By.xpath("//*[@id='compositePageTitleDiv']")); 

或者如果它是嵌套,可以這樣訪問以及

WebElement element = driver.findElement(By.xpath("//html/body/div[3]/div[3]/")); 

這只是一個粗略的語法。

+0

謝謝,我知道的語法,但是,要麼我從鉻得到,我想根據我的研究didnt創建的X路徑或一個工作。 – Amol1981

+0

這是類似的:http://stackoverflow.com/questions/2596264/trying-to-create-xpath-from-this-html-snippet?rq=1 –

0

如果您只需使用By.id()來定位元素,則無需在此處使用Xpath。 Asuming使用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");

希望它能幫助.. :)

+0

無法找到由id元素,讓下面的錯誤異常螺紋「主」 org.openqa.selenium.NoSuchElementException:無法找到元素與ID == compositePageTitleDiv(警告:服務器未提供任何信息棧跟蹤) 命令持續時間或超時:10.40秒 – Amol1981

+0

@ Amol1981需要實現'WebDriverWait'然後,看到更新的答案.. –