Каков наилучший способ поиска нечувствительного к регистру текста с использованием Selenium в Python? - PullRequest
0 голосов
/ 08 февраля 2020

Первый столбец строки - это адреса электронной почты. Я отправляю это значение в строку поиска и нажимаю кнопку «Поиск», а затем жду, пока не появятся результаты поиска. Тогда у меня есть следующее заявление if для поиска, если этот адрес электронной почты появился в результатах.

Но я не могу понять, как сделать поиск нечувствительным к регистру. Так что, если я отправлю 'test@email.com' и обнаружу 'tEsT@EMAIL.com', он вернет true.

if driver.find_elements_by_xpath("(//*[contains(text(), '" + row[1] + "')] | //*[@value='" + row[1] + "'])"):
    foundEmails += 1
    print("Found Email: " + row[1])

Ответы [ 3 ]

0 голосов
/ 08 февраля 2020

Хорошо, я нашел решение своей проблемы, по какой-то причине не работает верхний и нижний регистр, поэтому я должен использовать translate ()

     if driver.find_elements_by_xpath('//*[contains(translate(text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", '
             '"abcdefghijklmnopqrstuvwxyz"), "{0}")]'.format(row[1].lower())):
0 голосов
/ 08 февраля 2020

match () - это функция XPATH 2.0, которая допускает сопоставление регулярного выражения без учета регистра.

Один из флагов i для сопоставления без учета регистра.

Вы можете использовать следующие XPATH с функцией matches() с флагом без учета регистра:

if driver.find_elements_by_xpath("(//*[matches(text(), '" + row[1] + "','i')] | //*[matches(@value,'" + row[1] + "','i')])"):
    foundEmails += 1
    print("Found Email: " + row[1])
0 голосов
/ 08 февраля 2020

Сначала установите текст в нижний регистр, чтобы его можно было сопоставить:

     if driver.find_elements_by_xpath("(//*[contains(text(), '" + row[1] + "')] | //* 
                [@value='" + row[1] + "'])"):
            row[1] = row[1].lower() #assuming that this is the outputname, as you print this
            foundEmails += 1
            print("Found Email: " + row[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...