Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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 如何通过在SeleniumWebDriver中搜索链接的文本来访问链接?_Java_Selenium_Xpath_Selenium Webdriver_Webdriver - Fatal编程技术网

Java 如何通过在SeleniumWebDriver中搜索链接的文本来访问链接?

Java 如何通过在SeleniumWebDriver中搜索链接的文本来访问链接?,java,selenium,xpath,selenium-webdriver,webdriver,Java,Selenium,Xpath,Selenium Webdriver,Webdriver,我在网页中有一个树结构的HTML文件层次结构 如图所示 HTML代码是 <div class="rtMid rtSelected"> < span class="rtSp"/> < img class="rtImg" alt="Automation" src="http://192.168.1.6/eprint_prod_3.8/images/StoreImages/close_folder.png"/> < span clas

我在网页中有一个树结构的HTML文件层次结构 如图所示

HTML代码是

<div class="rtMid rtSelected">
    < span class="rtSp"/>
    < img class="rtImg" alt="Automation" src="http://192.168.1.6/eprint_prod_3.8/images/StoreImages/close_folder.png"/>
    < span class="rtIn" title="Automation">Automation (1)</span>
</div>


自动化(1)

在Selenium WebDriver中,有没有一种方法可以通过只搜索我不想使用XPath的文本来单击
自动化(1)
链接的原因是位置将发生变化,所以有没有方法通过文本找到它并单击它。

XPath功能强大,您发现它不可靠,您没有正确使用它。请花点时间在家里

这是一个简单的问题解决方案,但可能还有许多其他事情需要考虑。例如,匹配标题和文本等

driver.findElement(By.xpath(".//span[text()='Automation (1)']")).click();

CSS选择器也功能强大、速度更快,比XPath更具可读性。但在您的情况下,它不支持按文本查找。

按标题搜索效果很好

driver.findElement(By.xpath("//span[contains(@title,'Automation')]")).click();
2种方法

方法1:

按类名:

这里我们有文本自动化(1)的类名,即rtIn。 执行driver.findElement(按.className(“rtIn”))。单击()

方法2:

通过父级和类名的CSS选择器

父项的CSS选择器:。已选定

WebElement element1=driver.findElement(By.cssSelector(“.rtSelected”)) element1.className(“rtIn”)。单击()

方法3:

通过直接CSS选择器: 1.rtIn 2.rtSelected>.rtIn

最好使用第二个CSS选择器


driver.findelelement(通过.cssSelector(“.rtSelected>.rtIn”))。单击()

你能推荐一个我试过的代码driver.findElement(By.partialLinkText(“Automation”))。单击()@确保这只匹配一个元素。如果有其他元素具有相同的文本,则需要提供更多的HTML。上面的答案完全匹配。@Santhosh.S:不,这不是完整的代码。您需要为所有文件夹节点提供HTML。但请先尝试extact匹配,如果不起作用,请调试原因。的可能重复项