我遇到了一个更令人沮丧的硒问题。
我在页面上找到了一个表格,其中一个元素有一个链接。链接名为"Send“。
<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>
<!----><span aria-hidden="true" class="fa fa-info-circle ng-star-inserted"
id="reservert-info">
</span><!----><!----><!----></div><!---->
</saksnytt></td>这以前起过作用,我还没有找到为什么它现在停止工作的原因。但无论我如何努力找到它,Selenium都会用
no such element: Unable to locate element: {"method":"xpath","selector":"//data-e2e-selector[contains(text(),'Send brev ')]"}或者类似的-
我试过以下几种方法:
Browser.Wait().until(presenceOfElementLocated(By.linkText(merknad + " ")));这件事已经过去了。
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怎么可能找不到这样一个明显可见且可交互的元素呢?
由于代码是以角度生成的,并且或多或少是动态的,所以我也不能为这个特定的元素创建标记,所以我只能尝试通过文本来找到它。我没法去工作了。
有什么想法吗?
我可以用以下代码单击它:
driver.findElement(By.xpath("//*[@id='sakHendelser_0']/saksnytt/div/button/span")).click();但我希望能够将链接文本发送到该方法,而不是像这样硬编码xpath。
发布于 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 StrategiescssSelector:之一新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(); )
https://stackoverflow.com/questions/59358600
复制相似问题