如何识别在Selenium中偶尔出现的文本

2024-04-25 19:33:53 发布

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

如何查找有时出现在页面上的文本?一个典型的例子是错误的密码。然后会出现一条消息,说明密码输入不正确,我需要对此消息进行断言。消息出现在这个块<td colspan = "2" style = "color: Red;" align = "center"> Wrong name or password.</td>.不幸的是,我用xpath输入的代码找不到我的文本。你知道吗

请参见:

wait = WebDriverWait (driver 10)
text_tag = wait.until (EC.presence_of_element_located ((By.XPATH, "/html/body/form/div[3]/div[2]/div[2]/table/tbody/tr[1]/td[1]/div/div/div/div/div/div/div/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/b")))

if text_tag:
    assert text_tag.text == "Incorrect name or password."
    print (text_tag.text)
    print ("Found - OK")
else:
    exit()

Tags: ortextname文本div消息密码tag
3条回答

您可以设置临时隐式等待而不是WebDriverWait,并使用find_elements检查元素是否存在。这将在10秒内查找元素,如果元素存在,返回的列表将不会为空。你知道吗

driver.implicitly_wait(10)

error_message = driver.find_elements_by_xpath('//*[contains(., "Incorrect name or password")]')
if error_message:
    assert error_message[0].text == "Incorrect name or password."
    print (text_tag.text)
    print ("Found - OK")

driver.implicitly_wait(0)

作为一个补充,不要使用绝对xpath/html/body/...,它使脆弱的定位器。你知道吗

好的,谢谢你的帮助。这是最终的脚本,它是函数。有必要将XPATH更改为CSS选择器:

error_message = driver.find_element_by_css_selector('td[style = "color: Red;"]')

if error_message:
    assert error_message.text == "Incorrect name or password."
    print (error_message.text)
    print ("Found - OK")
else:
    exit()
    print("Not FOUND")

driver.implicitly_wait(0)

请尝试以下代码:

try:
    wait = WebDriverWait(driver, 15)
    text_tag =wait.until(EC.visibility_of_element_located("Xpath"))
    if text_tag:
        assert text_tag.text == "Incorrect name or password."
        print (text_tag.text)
        print("Found - OK")
    else:
        exit()
except:
    exit()
    print("Not FOUND")

相关问题 更多 >