selenium 当尝试使用Webdriver通过linkText查找链接时,是否有办法忽略大写?

up9lanfz  于 2022-11-24  发布在  其他
关注(0)|答案(4)|浏览(118)

我正在使用Selenium 2 Webdriver。
我想点击一个链接,但链接文本可以是“Linktext”或“LINKTEXT”。还有比这更好的方法吗:

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();
}

API和谷歌并没有真正帮助我。有什么想法如何忽略大写?

g0czyy6m

g0czyy6m1#

我不确定版本2是否支持正则表达式,但是Selenium 1支持正则表达式匹配。这些正则表达式可以标记为不区分大小写。如果适用的话,可以使用以下代码:

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

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

pwuypxnk

pwuypxnk2#

这肯定会有帮助,因为它对我很有效

List<WebElement> els = driver.findElements( By.xpath( ".//a[@href!='']" ) );
    for ( WebElement el: els ) {
        if ( el.getText().toLowerCase().equals( bookDetails.getBookName().toLowerCase() ) ) {
           el.click();
           break;
        }
    }
68de4m5k

68de4m5k3#

备选方案如下:

// get all the a elements from the page via tagname
    List<WebElement> elementList = driver.findElements(By.tagName("a"));

    // iterate through the list and click on element where text equals to text
    for( WebElement ele : elementList){

        if(ele.getText().equals("LINKTEXT") || ele.getText().equals("Linktext")){
            ele.click();
        }

    }

或以下for循环:

for( WebElement ele : elementList){

        if(ele.getText().toLowerCase().equals("linktext")){
            ele.click();
        }

    }
x8diyxa7

x8diyxa74#

LinkText是区分大小写的。因此,如果您有两个大小写不同的链接,它们将是两个彼此独立的不同元素。您的示例代码在我看来不正确。下面的列表永远不会包含文本为“LINKTEXT”的链接,因此“else”部分是无关的,也不是必需的。

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

相关问题