【问题标题】:How to click on a link inside span inside <a class> with using xpath如何使用 xpath 在 <a class> 内单击 span 内的链接
【发布时间】:2019-08-16 18:51:37
【问题描述】:

使用 xpath,sélénium 无法识别元素,正确的 xpath 是什么?

HTML:

<a class="xmi" onclick="this.focus();return false; "href="#">
 <span title="">SITE A</span>
</a>

我的 XML 定位器文件:

<domElements>
   <name>Site_A</name>
   <locators>
      <type>XPATH</type>
      <value>//span[contains(@title,'SITE A')]</value>
      <priority>0</priority>
   </locators>
      </domElements> 

Java 代码调用我的定位器:

this.locate("Site_A").click();

}

}

【问题讨论】:

  • 是否有通过链接文本定位的选项?尝试将“SITE A”作为链接文本。
  • HTML 真的是这样吗?由于 onClick 事件的结束引号之前的空格,它看起来无效。当我通过HTML validator 运行它时,我收到一条错误消息“属性之间没有空格。在第 1 行,第 53 列返回 false; "href="#">。当我简单地将 onClick 的右引号移到一个空格上以确保 href 属性之前有一个空格时,错误就消失了。
  • @jeffC 不是它不起作用,
  • @C.Peck 站点/html 由客户端提供,当我点击链接时它确实有效

标签: java html selenium-webdriver


【解决方案1】:

SITE A 不是标题(在这种情况下是一个空字符串),它是元素文本。使用text(). 定位它

//span[contains(., 'SITE A')]

如果元素在&lt;iframe&gt; 内,你需要先切换到它

driver.switchTo().frame("afr::PushIframe");

【讨论】:

  • org.openqa.selenium.TimeoutException: 预期条件失败:等待存在的元素位于: By.xpath ,我想我需要从一个类 > span > 标题中找到它,但我尝试了很多次
  • @RoughTime 这是在&lt;iframe&gt;里面吗?
  • iframe 从一开始就打开和关闭
  • @RoughTime 你需要先切换到它,更新答案。
  • 我添加了 DriverPageSwitcher.switchToLastPAge(this.webDriver) ,通常这是我用来切换的,但它是一样的
【解决方案2】:

SITE A不是value属性而是innerHTML,所以你需要:

<domElements>
   <name>Site_A</name>
   <locators>
      <type>XPATH</type>
      <value>//span[@title and text()='SITE A']</value>
      <priority>0</priority>
   </locators>
</domElements> 

作为替代方案,您还可以更改 &lt;value&gt; 以将父节点包含为:

<domElements>
   <name>Site_A</name>
   <locators>
      <type>XPATH</type>
      <value>//a[@class='xmi']/span[@title and text()='SITE A']</value>
      <priority>0</priority>
   </locators>
</domElements> 

【讨论】:

  • 谢谢,但它仍然无法正常工作,它对我有用的唯一方法是使用全局 Xpath 使用 chrome 插件,这不是一个好主意
猜你喜欢
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 2011-09-04
  • 2014-09-27
  • 1970-01-01
相关资源
最近更新 更多