【发布时间】:2019-12-16 14:24:45
【问题描述】:
我遇到了一个更令人沮丧的 Selenium 问题。
我在页面上有一个表格,其中一个元素有一个链接。该链接称为“Send brev”。
<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 怎么找不到像这样清晰可见且可交互的元素?
由于代码是在 Angular 中生成的,并且或多或少是动态的,所以我也无法为这个特定元素创建标签,所以我只能尝试通过文本来查找它。我无法上班。
有什么想法吗?
我可以用这个代码点击它:
driver.findElement(By.xpath("//*[@id='sakHendelser_0']/saksnytt/div/button/span")).click();
但我希望能够将链接文本发送到方法,而不是像那样对 xpath 进行硬编码。
【问题讨论】:
-
文本是Send brev,为什么要像
linkText(merknad + " ")或By.partialLinkText(merknad + " ")那样添加merknad?