Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Selenium查找内部具有非中断空间的链接_Java_Selenium - Fatal编程技术网

Java 使用Selenium查找内部具有非中断空间的链接

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">&nbsp;&

我越来越容易找到没有任何id或名称的链接,但这一个让我难堪,谷歌搜索也没有帮助。我正在尝试使用Java中的SeleniumWebDriver单击一个链接

 <a class="mainleftlinks" onclick="return TrackChanges();" href="/chcfweb/sbc/administration/aac/leftlinks.do?linkid=040000" styleclass="mainleftlinks">&nbsp;&nbsp;Administrative &nbsp;&nbsp;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 `&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']"));

@如果你愿意,你可以用onclick。试一试

driver.findElement(By.cssSelector("*[onclick='return TrackChanges();']")).click
是否需要使用文本?

driver.findelelement(By.xpath(“/*[contains(translate(,“\u00A0',”),“Administrative Claiming”))));

有关解释,请参见此处的我的答案

标记中没有链接。也许你的td是可点击的?仅仅使用那个id是行不通的。HTML不完整。我在原来的帖子中更新了它。这导致了奇怪的行为。它找到它是因为它没有出错,但是.click()也没有任何效果。它什么也不做。通常,如果我点击这个链接,它会在下面展开一个子链接列表。根本什么都没有发生。非常令人沮丧!成功了。非常感谢。我从来没有用过两个空格和三个空格。我还以为是一加二呢!