Есть ли способ игнорировать верхний регистр при попытке найти ссылку по linkText с Webdriver? - PullRequest
5 голосов
/ 05 декабря 2011

Я использую 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 и Google действительно не помогли мне. Есть идеи, как игнорировать прописные буквы?

Ответы [ 3 ]

0 голосов
/ 06 декабря 2011

LinkText чувствителен к регистру. Поэтому, если у вас есть две ссылки с разными случаями, то они будут двумя разными элементами, независимыми друг от друга. Ваш пример кода кажется мне неверным. Приведенный ниже список никогда не будет содержать ссылку с текстом «LINKTEXT», поэтому часть «else» не имеет значения и не требуется.

List<WebElement> list = driver.findElements(By.linkText("Linktext"));
0 голосов
/ 11 января 2014

Я тоже пытался понять это.Я еще не решил, но вот черновик моей концепции.Похоже, что это будет работать, но это не так (я получаю устаревшее ссылочное исключение).Мне просто нужно выяснить, как заставить работать такие вещи:

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();
        }
    }
}
0 голосов
/ 05 декабря 2011

Не знаю наверняка для версии 2, но Selenium 1 поддерживает регулярные выражения в сопоставлении. Они могут быть помечены как нечувствительные к регистру. Если применимо, может сработать следующее:

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

Трейлинг i указывает на нечувствительное к регистру совпадение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...