前端业务操作出现一闪而过的message提示信息,它们有一个特点就是显示1-2s后会自动消失,例如下图1:
图1
这些消息不像 alert (警告框)、confirm (确认框 )和prompt (提示框)那样,需要用户手动点击确定或取消按钮后才消失。
由于Selenium WebDriver 只会与可见元素交互,在上图中提示消息消失后,webdriver无法获取这些提示消息的定位以及文本内容。想解决这样的问题就需要从两点出发,一:如何获取这些提示消息的位置;二:如何获取这些消息的文本信息。
解决办法如下:
一、获取提示消息的定位
如一条成功消息
1.1打开网页将按F12键进入浏览器的调试模式,选择source,右边操作栏会出现暂停按钮如下图(图2):
图2
1.2 点击前端操作按钮,如下图的“成功”,点击按钮后会出现提示消息“恭喜你,这是一条陈宫消息”,在这条信息消失前,我们需要点击(图1)的暂停按钮,页面的提示消息就不会消失,如下图3:
图3
1.3经过上一步的操作,浏览器此刻进入调试模式,我们点击浏览器右边的“Elements” 按钮,寻找提示消息合适的定位方法,如下图4:
图4
二、获取消息的文本信息
这类提示消息虽然在1-2s后会自动消失,但当我们把鼠标悬停在这些消息上时,它们不会消失,直到鼠标离开。为了获取它们的文本,我们在脚本中必须使用鼠标悬停方法,使鼠标一直悬停在提示消息位置,再让driver获取它的文本。python脚本示例如下:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://element.eleme.cn/#/zh-CN/component/message')
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div/div[1]/div/div/div[2]/section/div[2]/div[1]/div/button[1]').click()
action_chains = ActionChains(driver)
loc = driver.find_element_by_css_selector('.el-message--success')
action_chains.move_to_element(loc).perform()
message = loc.text
print(message)
运行结果: