繁体   English   中英

使用Selenium查找其中包含非破坏空间的链接

[英]Finding a link with a non-breaking space inside it with Selenium

我越来越好找到没有任何ID或名字的链接,但这个让我感到困惑,Google搜索没有帮助。 我正在尝试使用Java中的Selenium webdriver单击链接。

 <a class="mainleftlinks" onclick="return TrackChanges();" href="/chcfweb/sbc/administration/aac/leftlinks.do?linkid=040000" styleclass="mainleftlinks">&nbsp;&nbsp;Administrative &nbsp;&nbsp;Claiming</a>

不确定那些东西是什么。 如果您查看应用程序,链接/按钮如下所示:

 Administrative
 Claiming

不知道如何格式化cssSelector,使用xpath来查找它? 用别的东西? 我很难过。 任何帮助非常感谢!

&nbsp; 是一个不易碎的空间,需要包括在内。 以下是通过文字获取链接的多种方法:

// by link text with 2 spaces at the begining and 3 spaces in the middle
WebElement ele1 = driver.findElement(By.linkText("  Administrative   Claiming"));

// by xpath with the caracter code of `&nbsp;`
WebElement ele2 = driver.findElement(By.xpath("//a[.='\u00A0\u00A0Administrative \u00A0\u00A0Claiming']"));

// by xpath by removing the `&nbsp;`
WebElement ele3 = driver.findElement(By.xpath("//a[translate(.,'\u00A0','')='Administrative Claiming']"));

nbsp是一个编码的空格。 您没有在链接中看到它,因为它会自动转换为''。 我不确定我是否理解了您的问题,但您可以通过ID或类名轻松获得该字段:

driver.findElement(By.id(yourId));

编辑

或者你可以通过类名得到它:

List<WebElement> elements = driver.findElements(By.className(className));

请注意,这将使您返回该类的所有元素。 然后你可以迭代它们并检查文本以匹配你的情况。

使用xpath包含。 也许是一些类似的东西

driver.findElement(By.xpath("//*[contains(., 'Administrative') and contains(., 'Claiming')]"));

@PeterCook如果你想要你可以使用onclick。 尝试

driver.findElement(By.cssSelector("*[onclick='return TrackChanges();']")).click

你需要使用文字吗?

driver.findElement(By.xpath("//*[contains(translate(., '\u00A0', ' '), 'Administrative Claiming')]"));

有关解释,请在此处查看我的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM