【发布时间】:2019-03-25 15:00:43
【问题描述】:
我正在尝试检索 Selenium 中的超链接元素,其中链接实际上正在执行 javascript。尽管尝试了几种不同的方法,但我无法检索它。
> 元素如下所示;试图检索 test1_decode 之一:
<section id="specialsection" role="tabpanel" aria-hidden="true">
<ul class="col4">
<li class="header2"><a href="javascript:SetApplication('test1_decode');">Example Application</a></li>
<li class="header2"><a href="javascript:SetApplication('test2_decode');">Example Application POC</a></li>
</ul>
</section>
我尝试了以下方法:使用 XPath 的 FindElement 包含链接文本,使用 Xpath 的 FindElement 包含文本,PartialLinkText 的 FindElement,LinkText 的 FindElement - 都失败了。
我什至尝试将所有 都放在一个列表中;我想知道是否可能是因为它的高度为 0?
//These are the different things I've tried:
IWebElement ExAppLogin = driver.FindElement(By.XPath("//a[contains(text(), 'Example Application')]"));
IWebElement ExAppLogin = driver.FindElement(By.XPath("//a[contains(@href, 'test1_decode')]"));
IWebElement ExAppLogin = driver.FindElement(By.PartialLinkText("test1_decode"));
IWebElement ExAppLogin = driver.FindElement(By.LinkText("test1_decode"));
IWebElement ExAppLogin = driver.FindElement(By.PartialLinkText("test1_decode"));
它们都生成异常“无法使用 xpath =="...找到元素...
【问题讨论】:
-
Selenium 似乎确实有 issues with zero height elements。您是否尝试过暂时取消高度限制以查看是否可以解决问题?
-
当您说删除高度限制时:您的意思是有一种方法可以通过忽略高度来查找/解析?或者你的意思是:修改原始页面以强制它在控件上具有高度?不幸的是,我不能做后者......
-
欢迎来到 SO。您是否能够使用上述定位器策略在浏览器开发工具元素选项卡中找到元素?
-
并检查您是否有任何 iframe,它包含此部分。
-
@supputuri 我做不到;我是 Selenium 的新手,所以假设我什么都不知道。我该怎么做?