如何验证按钮的data-qtip属性值?IE8+Selenium+ExtJS测试难题
解决IE8下ExtJS按钮提示文本的验证问题
嘿,碰到IE8搭配ExtJS和Selenium的这种兼容性坑真的让人头大!我给你几个直接验证按钮data-qtip属性值的实用方案,完美绕开鼠标悬停的问题:
方案一:Selenium IDE中直接验证属性
因为IE8对mouseOver事件的支持拉胯,加上ExtJS的提示框触发逻辑在IE下有特殊处理,直接读取按钮的data-qtip属性是最靠谱的方式。你可以在Selenium IDE里用以下两种方式实现:
方式1:使用verifyAttribute命令一步完成
直接定位到按钮元素,指定要验证的data-qtip属性和预期值:
<tr> <td>verifyAttribute</td> <td>//A[@id='aejs-button-1104']@data-qtip</td> <td>Gera relatórios de retorno</td> </tr>
这里用按钮的id定位比文本更精准,避免页面文本变化导致定位失效。
方式2:先存储属性值再验证(兼容性更好)
如果verifyAttribute在你的IE8环境里偶尔失效,可以先把属性值存到变量里,再用verifyEquals验证:
<tr> <td>storeAttribute</td> <td>//A[@data-componentid='aejs-button-1104']@data-qtip</td> <td>tooltipText</td> </tr> <tr> <td>verifyEquals</td> <td>${tooltipText}</td> <td>Gera relatórios de retorno</td> </tr>
方案二:IEDriver代码层面的实现(如果后续转代码自动化)
要是你之后打算用代码(比如Java/Python)来做自动化,也可以直接通过元素的getAttribute方法读取属性:
Java示例
// 定位按钮元素 WebElement reportButton = driver.findElement(By.id("aejs-button-1104")); // 获取data-qtip属性值 String tooltipContent = reportButton.getAttribute("data-qtip"); // 验证文本是否符合预期 Assert.assertEquals(tooltipContent, "Gera relatórios de retorno");
Python示例
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Ie() # 定位按钮 report_button = driver.find_element(By.ID, "aejs-button-1104") # 获取属性值 tooltip_text = report_button.get_attribute("data-qtip") # 断言验证 assert tooltip_text == "Gera relatórios de retorno"
为什么mouseOver在IE8里不好使?
其实这是老版本IE的通病:Selenium的mouseOver命令模拟的是原生DOM事件,但ExtJS的提示框很多时候是通过自定义的鼠标事件或者定时器触发的,IE8对这些事件的支持和现代浏览器差异很大,导致模拟悬停后提示框根本不弹出。直接读属性的方法完全绕开了事件触发的问题,既稳定又高效。
内容的提问来源于stack exchange,提问作者ViNi
相关产品推荐
相关产品推荐

