首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium (Java)无法通过可见链接文本找到元素

Selenium (Java)无法通过可见链接文本找到元素
EN

Stack Overflow用户
提问于 2019-12-16 14:24:45
回答 4查看 130关注 0票数 0

我遇到了一个更令人沮丧的硒问题。

我在页面上找到了一个表格,其中一个元素有一个链接。链接名为"Send“。

代码语言:javascript
复制
<td data-e2e-selector="sakHendelser" id="sakHendelser_0" class="ng-star-inserted">
  <saksnytt><!----><!----><!---->
   <div class="hb-tekst--ingenBryting ng-star-inserted">
    <!----><!----><!---->
     <button class="hb-knapp hb-knapp--lenke hb-knapp--alignTeks hb-knapp-lenke-nopadding ng-star-inserted" 
      data-e2e-selector="saksnytt-link">
        <i aria-hidden="true" class="fa fa-flag fa-envelope"></i>
        <span class="hb-knapp-tekst">Send brev </span></button> &nbsp;&nbsp;
        <!----><span aria-hidden="true" class="fa fa-info-circle ng-star-inserted" 
        id="reservert-info">
        </span><!----><!----><!----></div><!---->
</saksnytt></td>

这以前起过作用,我还没有找到为什么它现在停止工作的原因。但无论我如何努力找到它,Selenium都会用

代码语言:javascript
复制
 no such element: Unable to locate element: {"method":"xpath","selector":"//data-e2e-selector[contains(text(),'Send brev ')]"}

或者类似的-

我试过以下几种方法:

代码语言:javascript
复制
Browser.Wait().until(presenceOfElementLocated(By.linkText(merknad + " ")));

这件事已经过去了。

代码语言:javascript
复制
driver.findElement(By.linkText(merknad + " ")).click();
driver.findElement(By.partialLinkText(merknad + " ")).click();
driver.findElement(By.xpath("//data-e2e-selector[contains(text(),'" + "Send brev" +"')]"));    
driver.findElement(By.xpath("//id[contains(text(),'" + "Send brev" +"')]"));
data-e2e-selector="sakHendelser" id="sakHendelser

我还尝试在链接文本中的"v“之后添加一个空格,但没有结果。

Selenium怎么可能找不到这样一个明显可见且可交互的元素呢?

由于代码是以角度生成的,并且或多或少是动态的,所以我也不能为这个特定的元素创建标记,所以我只能尝试通过文本来找到它。我没法去工作了。

有什么想法吗?

我可以用以下代码单击它:

代码语言:javascript
复制
driver.findElement(By.xpath("//*[@id='sakHendelser_0']/saksnytt/div/button/span")).click();

但我希望能够将链接文本发送到该方法,而不是像这样硬编码xpath。

EN

Stack Overflow用户

发布于 2019-12-16 22:31:24

您需要处理以下几件事情:

  • By.linkText()By.partialLinkText()只适用于<a>标记,在<a>标记中,<span>id都是<span>的属性,但您已经尝试将它们作为tagName使用。文本发送的brev<span>标记中使用的
  • H 215H 116因此将元素与文本标识为E 117SendE 218,然后继续与其交互,您需要为D19诱导WebDriverWait >,并且可以使用以下的Locator Strategies
  • cssSelector:之一

新WebDriverWait(驱动程序,WebDriverWait)

新@data-e2e-selector='saksnytt-link'//span@class='hb-knapp-tekst‘(驱动程序,@data-e2e-selector=’saksnytt-link‘//span@class=’hb-knapp-tekst‘hb-knapp-lenke hb-knapp-对齐Send-knapp-lenke-nopadding ng-star-插入)和@data-e2e-selector=’saksnytt-link‘//span@class=’hb-knapp-tekst‘并包含(.,发送brev')"))).click(); )

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59358600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档