Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 当试图用Webdriver按linkText查找链接时,有没有办法忽略大写字母?_Java_Selenium_Webdriver - Fatal编程技术网

Java 当试图用Webdriver按linkText查找链接时,有没有办法忽略大写字母?

Java 当试图用Webdriver按linkText查找链接时,有没有办法忽略大写字母?,java,selenium,webdriver,Java,Selenium,Webdriver,我正在使用Selenium2WebDriver 我想点击一个链接,但链接文本可以是“链接文本”或“链接文本”。还有比这更好的方法吗: List<WebElement> list = driver.findElements(By.linkText("Linktext")); if(list.size()>0){ driver.findElement(By.linkText("Linktext")).click(); } else { driver.findElem

我正在使用Selenium2WebDriver

我想点击一个链接,但链接文本可以是“链接文本”或“链接文本”。还有比这更好的方法吗:

List<WebElement> list = driver.findElements(By.linkText("Linktext"));
if(list.size()>0){
    driver.findElement(By.linkText("Linktext")).click();
} else {
    driver.findElement(By.linkText("LINKTEXT")).click();
}
List List=driver.findElements(By.linkText(“linkText”);
如果(list.size()>0){
driver.findElement(By.linkText(“linkText”))。单击();
}否则{
driver.findElement(By.linkText(“linkText”))。单击();
}

API和谷歌并没有真正帮助我。你知道如何忽略大写字母吗?

我不知道第2版是否正确,但Selenium 1在匹配中支持正则表达式。这些可以标记为不区分大小写。如果适用,可采用以下方法:

driver.findElements(By.linkText("regexpi:Linktext"));

尾随的
i
表示不区分大小写的匹配。

链接文本区分大小写。因此,如果您有两个具有不同情况的链接,那么它们将是两个相互独立的不同元素。我觉得你的示例代码不正确。下面的列表永远不会包含带有文本“LINKTEXT”的链接,因此“else”部分是不相关的,不是必需的

List<WebElement> list = driver.findElements(By.linkText("Linktext"));
List List=driver.findElements(By.linkText(“linkText”);

我也一直在努力解决这个问题。我还没有解决它,但这是我的概念的草稿。看起来它会工作,但它不会(我得到一个陈旧的引用异常)。我只需要想一想如何让这种东西发挥作用:

public boolean clickByLinkTextInsensitive( String matcher ) {
    List<WebElement> els = driver.getElements( By.xpath( ".//a[@href!='']" ) );
    for ( WebElement el: els ) {
        if ( els.getText().toLowerCase().equals( matcher.toLowerCase() ) ) {
           el.click();
        }
    }
}
公共布尔ClickByLink文本不敏感(字符串匹配器){
列表els=driver.getElements(By.xpath(“.//a[@href!=”)”);
对于(WebElement el:els){
if(els.getText().toLowerCase().equals(matcher.toLowerCase())){
el.click();
}
}
}

我试过了,但似乎不起作用。但是感谢您的回答我想到XPath://*[小写(text())='linktext']我试过了,但是您的表达式是invailid:org.openqa.selenium.InvalidSelectorException:给定的选择器//*[小写(text())='linktext']无效或未生成WebElement。出现以下错误:[InvalidSelectorError]无法找到xpath表达式为/*[小写(text())='Linktext']的元素,原因是以下错误:[异常…”该表达式不是合法表达式。“代码:”51“nsresult:“0x805b0033(NS_错误\u DOM_无效\u表达式\u错误)”位置:"resource://fxdriver/modules/atoms.js 行:2403“];持续时间或超时:20毫秒此错误表示浏览器不支持最新的XPath规范-查看此问题以获得替代解决方案:然后告诉我,如果链接文本是链接文本,我如何单击我的元素?else代码是相关的,因为如果没有链接文本,则linkText ist找到元素linkText Is LINKTEXT,我可以单击它。所谓“无关”,我的意思是它不是必需的。只要单击具有LINKTEXT“LINKTEXT”的元素,您就已经知道答案:)driver.findElement(By.LINKTEXT(“LINKTEXT”))。click();在您否决投票之前,请输入注释,以便此答案有用