【问题标题】:Couldn't click on menu link [duplicate]无法点击菜单链接[重复]
【发布时间】:2019-10-18 23:39:35
【问题描述】:

我正在尝试打开菜单列表中的菜单,然后单击菜单中的链接。菜单列表结构就像有两个并排的链接。一个链接转到提供摘要的主要部分,另一个链接打开菜单。我可以单击转到主要部分的链接,但无法单击打开菜单的链接,尽管我使用的 XPath 可以唯一地标识菜单链接。 HTML 是:

<li _ngcontent-c9="" class="list-group-item d-flex justify-content-between align-items-center">
  <i _ngcontent-c9="">...</i>
  <div _ngcontent-c9="" class="center" style="font-family: ITC Avant Garde Gothic Std Book;font-size: 20px;">
    <a _ngcontent-c9="" routerlink="../someText/mainlink" href="#/someText/mainlink">Main Link</a>
    <span _ngcontent-c9="" style="padding-left:40%">
      <a _ngcontent-c9="" class="fa fa-bars" data-target="#basicExample" data-toggle="modal" placement="left">
      </a>
    </span>
  </div>
</li>

我需要访问span下的链接。

没有文字Menu Link。我已经添加了该文本,以便可以理解结构。我用于菜单链接的 XPath:

.//a[./text()='Main Link']/../span/a

我用于主链接的 XPath 是:

.//a[./text()='Main Link']

另外,我使用页面工厂将该元素定义为:

@FindBy(linkText='Main Link')
WebElement mainLink;

当我尝试点击主链接时,两者都在工作。但我无法点击它旁边的菜单链接。我已经实现了 20 秒的显式等待。我收到了TimeOutException

【问题讨论】:

  • 看起来两个链接的结构相同,只是文本不同。你能分享更多代码吗?你能分享 DOM 中的整个“li”元素吗?
  • 请使用基于文本的实际 HTML 来更新问题,而不是手工制作的 HTML。
  • 用实际的 HTML 更新了问题。
  • 元素是Angular元素,需要诱导WebDriverWait
  • 应用等待条件elementToBeClickablevisibilityOf,但没有运气。

标签: selenium selenium-webdriver webdriverwait timeoutexception page-factory


【解决方案1】:

您可以使用以下任何 xpath。

选项 1:

 //a[.='Main Link']/following-sibling::span/a

选项 2:

//a[@data-target='#basicExample']

【讨论】:

  • 没用,兄弟。仍然收到 TimeOutException。
  • 你可以点击Main Link吗?你能检查一下你是否可以用//a[.='Main Link']访问Main Link
  • 是的,我可以。刚刚做到了。
  • 第二个 XPath 不是唯一的。它匹配 10 个元素。
  • second xpath 是什么意思?你能点击` //a[.='Main Link']/following-sibling::span`吗?
猜你喜欢
  • 2017-01-18
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 2013-08-21
相关资源
最近更新 更多