在Python中使用Selenium搜索不区分大小写的文本的最佳方法是什么?

2024-05-29 07:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

行的第一列是电子邮件地址。我将该值发送到搜索栏并单击搜索,然后等待搜索结果通过。然后我有下面的if语句来搜索结果中是否出现了该电子邮件地址

但就我个人而言,我不知道如何使搜索不区分大小写。所以,如果我发送test@email.com“它找到了”tEsT@EMAIL.com"这会变成现实

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

Tags: testcomif电子邮件email地址driverelements
3条回答

好的,我找到了问题的解决方案,由于某些原因,大写和小写不起作用,所以我必须使用translate()

     if driver.find_elements_by_xpath('//*[contains(translate(text(), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", '
             '"abcdefghijklmnopqrstuvwxyz"), "{0}")]'.format(row[1].lower())):

matches()是一个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])

首先将文本设置为小写,以便匹配:

     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])

相关问题 更多 >

    热门问题