背景:
UI自动化测试过程中,我们经常遇见网页上点击“确定”一类的按钮时,会弹出一个提示框,提示成功之类的消息,这种提示框可能只会存在1s~2s,过后元素节点就会在DOM中消失了。我们如果想定位上面的提示信息,就很难用正常方法抓取到。
本篇文章讲解下如何定位一闪而过的 dialog 消息~
dialog场景
首先我们需要定位到此元素上,查看元素的属性相关信息,按f12 后鼠标还没来得及指上去就消失了,或者刚指上去,dom里面的元素就不见了。
暂停dialog
打开浏览器,f12 后查看,打开 Source 项,在右侧有个暂停按钮,如下图
当 dialog 提示语出现的时候,点下暂停按钮,此时页面就不会动了
于是就可以在 Elements 里面用鼠标指到 dialog 元素上了
代码实现
获取dialog的时候,先定位该元素,通过上面抓出来的元素信息 <h2>个人信息修改成功!</h2>
定位这个元素的话,它没什么属性,但是可以定位它上面的一层div,甚至再上一层的 class="successbox dialogbox" id="jsSuccessTips"
这2个属性定位
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://x.x.x.x:8000/users/login/")
# 前面操作省略,进入到保存页面
# 点保存按钮
driver.find_element_by_id("jsEditUserBtn").click()
# 点击保存按钮后,dialog 不会立马出现会有一点点的延迟,可以先sleep下
time.sleep(0.2)
# 定位dialog 用css的层级定位
dialog = driver.find_element_by_css_selector("#jsSuccessTips>.cont").text
print(dialog)