【问题标题】:I want to find the xpath for the image我想找到图像的 xpath
【发布时间】:2014-06-30 00:26:24
【问题描述】:

这是html代码

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

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 语言回答。 有人可以帮帮我吗???

谢谢

【问题讨论】:

  • 不应该只是//table/tbody/tr/td[5]/a/img 吗?为什么是div
  • 我用过这个..它工作了 //td[@class='navItem relative']/a[@class='content tasks_selected selected']/div/img"

标签: java selenium xpath selenium-webdriver html-parsing


【解决方案1】:

有多种方法可以找到img 标签。取决于img 标签属性的唯一性以及它在页面上的位置。

这是一种查找方法,基于Tasks div:

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

您也可以依赖img所在的td并检查sizer类:

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

等等。

【讨论】:

  • 感谢 alecxe...我一定会使用这种方法
  • @user3499450 欢迎您,如果您认为值得,请考虑accepting the answer。谢谢。
【解决方案2】:

我看到您正在使用 Selenium。最安全的选择是找到最近的具有@id 属性的父级,然后从那里往下走。试试这个://table[@id='topnav']//img。正如 alecxe 所指出的,根据图像在此表中的独特程度,您可能需要进一步缩小 XPath 范围。类似//table[@id='topnav']//tr[1]//img,甚至//table[@id='topnav']//td[contains(@class, 'navItem')]//img

您发布的 XPath 将不起作用,因为与您发布的示例 HTML 相比,它存在一些问题:

  1. tbody 可能不会出现在所有浏览器中
  2. 元素 td[5] 的限定符 [@class='navItem relative'] 是多余的(尽管这不是问题)
  3. div[2] 不存在,您的 HTML 示例仅显示一个 div

【讨论】:

  • 嗨 SiKing..html 部分包含 2 个 div ,我从中发布了我想用来跟踪元素的 div 部分。
  • 如果您没有发布完整的 HTML 块,那么很难用正确的 XPath 来回答。我上面的任何建议对你有用吗?如果是,则将我的回复投票为有效答案。如果不是,请澄清您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多