【问题标题】:Need Xpath for Span>Class>title跨度>类>标题需要Xpath
【发布时间】:2018-11-15 14:23:08
【问题描述】:

我是测试新手,需要一些关于 Xpath 的帮助以获取以下代码:

元素的InnerHTML:

<img class="icon" src="custom/icons/Injury.png">
<span class="buttonText"><span class="title">An injury</span></span>
<span class="title">An injury</span>

我想点击“受伤”,在xpath下试过了,但它不起作用

driver.findElement(By.xpath(".//span[text()='An injury']")).click();

    <div id="pageLayout-eLeType-AFBWtFlqgByDxQjVusTPqEu0-bMs-AFBWtFlqgByDxQjVusTPqEuw" class="formCell button80Percent" style="width:48.0%;"> 
     <div class="dashboardLinksContainer">
      <div title="" class="dashboardLink linkAsButton">
       <a href="/QUASAR/new/Incident" onclick="userFavourites.recordVisit('Incident', 'anVtcENvbW1hbmQoJz9jb21tYW5kPW5ldyZicGlkPUFCTnlsR0dYTWpRMk9EazJNREkwTXpNNCZ0aXRsZT0iSW5jaWRlbnQiJyk7');jumpCommand('?command=new&amp;bpid=ABNylGGXMjQ2ODk2MDI0MzM4&amp;title=&quot;Incident&quot;');return false;"><img class="icon" src="custom/icons/Injury.png">
         <span class="buttonText">
           <span class="title">An injury</span>
         </span>
       </a>
      </div>
     </div>
   <div class="clear"></div>
 </div>

<div id="pageLayout-eLeType-AFBWtFlqgByDxQjVusTPqEu3-bMs-AFBWtFlqgByDxQjVusTPqEuw" class="formCell button80Percent" style="width:48.0%;"> 
  <div class="dashboardLinksContainer">
    <div title="" class="dashboardLink linkAsButton">
      <a href="/QUASAR/new/Incident" onclick="userFavourites.recordVisit('Incident', 'anVtcENvbW1hbmQoJz9jb21tYW5kPW5ldyZicGlkPUFCTnlsR0dYTWpRMk9EazJNREkwTXpNNCZ0aXRsZT0iSW5jaWRlbnQiJyk7');jumpCommand('?command=new&amp;bpid=ABNylGGXMjQ2ODk2MDI0MzM4&amp;title=&quot;Incident&quot;');return false;">
         <img class="icon" src="custom/icons/Damage.png">
      <span class="buttonText"><span class="title">Damage or loss to property or asset</span>
     </span>
    </a>
   </div>
  </div>
 <div class="clear"></div>
</div>

这是 2 个 html 代码,还有大约 8 个,并且都具有相同的 span 类 >buttonText 和 Span class= title 只是标题名称不同

【问题讨论】:

  • 您能否检查一下该特定元素是否位于 iframe 标记中?
  • 为什么要添加xpath-2.0标签? Selenium 不支持 XPath 2.0。也让我们知道您想要点击哪个元素:提供的 HTML 示例与附加图片上的 HTML 不同
  • 我已经提供了html代码,我想点击标题>受伤
  • 您是否尝试单击&lt;a&gt; 标签而不是&lt;span&gt; 标签?有一个内联 JavaScript 注册到 &lt;a&gt; 标签 onclick 事件。

标签: java selenium selenium-webdriver xpath css-selectors


【解决方案1】:

你可以使用 CSS 选择器

span.title:nth-child(3)

编辑 你可以在Xpath下面使用

".//*[@id='pageLayout-eLeType-AFBWtFlqgByDxQjVusTPqEu0-bMs-AFBWtFlqgByDxQjVusTPqEuw']/div[1]/div/a/span/span"

或使用链接文本

"An injury"

【讨论】:

  • 对不起,我不太明白。我附上了我的 html 代码的屏幕截图。
  • 我已经为 CSS 选择器添加了代码,所以你可以使用它来代替 xpath
  • 我尝试使用上面的 CSS 选择器,但它不起作用。您能否查看原始帖子所附的屏幕截图,该屏幕截图将提供有关我的 html 代码的更多详细信息。
  • 请添加完整的 HTML 文本而不是屏幕截图
  • 我添加了完整的 HTML 文本
【解决方案2】:

根据您共享的 HTML,在元素上调用 click(),其中文本为 伤害,您可以使用以下任一解决方案:

  • cssSelector:

    driver.findElement(By.cssSelector("div.dashboardLink.linkAsButton > a[href='/QUASAR/new/Incident'] span.buttonText > span.title")).click();
    
  • xpath:

    driver.findElement(By.xpath("//div[@class='dashboardLink linkAsButton']/a[@href='/QUASAR/new/Incident']//span[@class='buttonText']/span[@class='title'][contains(.,'An injury')]")).click();
    

【讨论】:

  • 嗨,在 css [href=/QUASAR/new/Incident] 中不需要单引号?
  • 我尝试使用两者但仍然无法点击。在检查 chrome 上的元素时,我可以使用查找或搜索功能找到确切的元素。但是当我在 selenium 中使用相同的代码时,我无法点击该元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
相关资源
最近更新 更多