Java 使用Selenium查找内部具有非中断空间的链接
我越来越容易找到没有任何id或名称的链接,但这一个让我难堪,谷歌搜索也没有帮助。我正在尝试使用Java中的SeleniumWebDriver单击一个链接Java 使用Selenium查找内部具有非中断空间的链接,java,selenium,Java,Selenium,我越来越容易找到没有任何id或名称的链接,但这一个让我难堪,谷歌搜索也没有帮助。我正在尝试使用Java中的SeleniumWebDriver单击一个链接 <a class="mainleftlinks" onclick="return TrackChanges();" href="/chcfweb/sbc/administration/aac/leftlinks.do?linkid=040000" styleclass="mainleftlinks"> &
<a class="mainleftlinks" onclick="return TrackChanges();" href="/chcfweb/sbc/administration/aac/leftlinks.do?linkid=040000" styleclass="mainleftlinks"> Administrative Claiming</a>
不确定如何格式化cssSelector,请使用xpath查找此文件?用别的吗?我被难住了。非常感谢您的帮助 nbsp是一个编码的空白。您在链接中看不到它,因为它会自动转换为“”。我不确定我是否理解您的问题,但您可以通过id或类名轻松获取该字段:
driver.findElement(By.id(yourId));
List<WebElement> elements = driver.findElements(By.className(className));
编辑
或者,您可以通过类名获得:
driver.findElement(By.id(yourId));
List<WebElement> elements = driver.findElements(By.className(className));
List elements=driver.findElements(By.className(className));
请注意,这将使您返回该类的所有元素。然后您可以迭代它们并检查文本以匹配您的案例。使用xpath contains。也许是类似于
driver.findElement(By.xpath("//*[contains(., 'Administrative') and contains(., 'Claiming')]"));
是一个不可破坏的空间,需要包括在内。以下是通过文本获取链接的多种方法:
// 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 ` `
WebElement ele2 = driver.findElement(By.xpath("//a[.='\u00A0\u00A0Administrative \u00A0\u00A0Claiming']"));
// by xpath by removing the ` `
WebElement ele3 = driver.findElement(By.xpath("//a[translate(.,'\u00A0','')='Administrative Claiming']"));
@如果你愿意,你可以用onclick。试一试
driver.findElement(By.cssSelector("*[onclick='return TrackChanges();']")).click
是否需要使用文本?driver.findelelement(By.xpath(“/*[contains(translate(,“\u00A0',”),“Administrative Claiming”))));
有关解释,请参见此处的我的答案标记中没有链接。也许你的td是可点击的?仅仅使用那个id是行不通的。HTML不完整。我在原来的帖子中更新了它。这导致了奇怪的行为。它找到它是因为它没有出错,但是.click()也没有任何效果。它什么也不做。通常,如果我点击这个链接,它会在下面展开一个子链接列表。根本什么都没有发生。非常令人沮丧!成功了。非常感谢。我从来没有用过两个空格和三个空格。我还以为是一加二呢!