Использование xpath, содержащего пробелы

List <WebElement> tableSituacao = driver.findElements(By.xpath("//*[@id=\"tabela\"]/tbody/tr/td[5][contains(text(),"+situacao+")]"));

как использовать normalize-space в моем случае? у "situacao" есть пробелы

4 ответа

Решение

Нет необходимости справляться с этим с помощью XPath. Вы можете просто .trim() строка.

List <WebElement> tableSituacao = driver.findElements(By.xpath("//*[@id='tabela']/tbody/tr/td[5][contains(text(),'" + situacao.trim() + "')]"));

Я бы также использовал ' внутри XPath вместо избежания двойных кавычек \", Я думаю, что это облегчает чтение.

Используйте код ниже:

//*[@id=\"tabela\"]/tbody/tr/td[5][normalize-space()='"+situacao+"')]

Примечание: это будет работать, если вы оставили в правой части строки в виде строки _example_ (рассматривать _ как космос). но если вы склонны считать пространство серединой и строкой, как example example затем его полная строка удаляет пробел перед первым примером текста и после последнего примера текста.

Попробуйте использовать одинарные кавычки в выражении xpath. Здесь я предполагаю, что suticao содержит строку "Пример примера":

List <WebElement> tableSituacao 
= driver.findElements(
      By.xpath("//*[@id='tabela']/tbody/tr/td[5][contains(text(),'" + suticao + "')]");

Передать переменную situacao в пределах xpath Вы можете использовать следующую строку кода:

List <WebElement> tableSituacao = driver.findElements(By.xpath("//*[@id='tabela']/tbody/tr/td[5][normalize-space()='" + situacao + "']"));
Другие вопросы по тегам