2014-05-12 23 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