2014-05-12 25 views
1

這是我想找到的XPath的圖像

<div class="navBg"> 
<table id="topnav" class="navTable" cellspacing="0" cellpadding="0" style="-moz-user-  select: none; cursor: default;"> 
<tbody> 
<tr> 
<td class="logoCell" valign="top"> 
<td class="separator"> 
<td class="navItem relative" style="z-index: 99"> 
<td class="separator"> 
<td class="navItem relative"> 
<a class="content tasks" style="border-width: 0" href="/tasks/otasklist.do"> 
<div class="label" style="z-index:155; ">Tasks</div> 
<img class="sizer" width="84" height="93" src="/img/default/pixel.gif? hash=1106906246"/> 
<span class="bottomBorder"> 

我試圖找到圖像中的XPath的HTML代碼 - >

src="/img/default/pixel.gif?hash=1106906246" 

我曾嘗試不同的組合Ë :g

//table/tbody/tr/td[5][@class='navItem relative']/a/div[2]/img 

我也寫了下面的代碼。

WebDriverWait wait= new WebDriverWait(driver, 20); 
    wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Tasks"))); 

    driver.findElement(By.xpath("//table/tbody/tr/td[5][@class='navItem relative']/a/div[2]/img")).click(); 
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 

它識別網頁上的元素通過firepath但在運行腳本後,它不是單擊元素和控制檯顯示「沒有這樣的元素例外」。

請只用java lang回答。 有人可以請幫我。

THX

+0

它不應該只是'// table/tbody/tr/td [5]/a/img'嗎?爲什麼'div'? – LSerni

+0

我用這個..它的工作// td [@ class ='navItem relative']/a [@ class ='content tasks_selected selected']/div/img「 – user3499450

回答

0

有多種方式,找到img標籤。取決於標籤屬性的img的唯一性及其在頁面上的位置。

這裏有一個辦法,找出它的基礎上,Tasks DIV:

//table//div[text()='Tasks']/following-sibling::img 

您也可以依靠其img位於td並檢查sizer類:

//table//td[contains(@class, 'navItem')]/img[@class='sizer'] 

等。

+0

謝謝alecxe ...我一定會用這個方法 – user3499450

+0

@ user3499450如果您認爲它值得,歡迎您考慮[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。謝謝。 – alecxe

0

我看到你正在使用硒。最安全的選擇是找到最接近父母的@id屬性,然後從那裏開始工作。試試這個://table[@id='topnav']//img。正如alecxe指出的那樣,根據此表中圖像的獨特性,您可能需要將XPath縮小一點。類似於//table[@id='topnav']//tr[1]//img,或者甚至//table[@id='topnav']//td[contains(@class, 'navItem')]//img

您發佈將無法正常工作,因爲它有一些問題相比,您發佈的示例HTML中的XPath:

  1. tbody可能不會出現在所有的瀏覽器
  2. 該元素的修飾詞[@class='navItem relative']td[5]是多餘的(雖然這不完全是一個問題)
  3. div[2]不存在,你的HTML樣品只顯示一個div
+0

嗨SiKing .. HTML部分是持有2個div我從中發佈div部分,我想用來追蹤元素。 – user3499450

+0

如果您沒有發佈完整的HTML代碼塊,那麼使用正確的XPath很難回答。我的上述建議是否適合你?如果是的話,那麼投我的答覆作爲有效的答案。如果沒有,請澄清你的問題。 – SiKing