Selenium(Java)定位器问题:如何定位无常规属性的Cookie接受按钮
你遇到的按钮虽然缺失id、name这类常规定位属性,但是存在多个稳定性远高于class的定位锚点,以下按稳定性从高到低给出可直接使用的定位代码:
- 优先方案:使用
data-qa属性定位data-qa是前端专门为自动化测试预留的属性,不会随UI样式、版本迭代随意变更,是所有方案里稳定性最高的选择,对应Java代码如下:import org.openqa.selenium.By; import org.openqa.selenium.WebElement; // 定位Cookie接受按钮 WebElement cookieAcceptBtn = driver.findElement(By.cssSelector("button[data-qa='privacy-settings-action-info']")); // 后续点击操作直接调用click()即可 cookieAcceptBtn.click(); - 备选方案1:使用
aria-label属性定位
无障碍标签aria-label一般用于屏幕阅读器识别,改动频率极低,可作为第一备选,代码如下:WebElement cookieAcceptBtn = driver.findElement(By.cssSelector("button[aria-label='Приемане на всички бисквитки']")); - 备选方案2:使用按钮文本+type属性组合定位
如果上述属性出现变动,可通过按钮显示的OK文本+按钮type属性做组合匹配,过滤其他同文本按钮的干扰,使用XPath实现:WebElement cookieAcceptBtn = driver.findElement(By.xpath("//button[@type='button' and text()='OK']"));
注意:不要使用元素上的class属性做定位,
_908LZ _1pO2V m29-z _4R7G3 _2JFg2这类无明确语义、格式特殊的class值大多是前端工程构建时自动生成的哈希类名,版本迭代后极大概率发生变化,会导致定位频繁失效。
内容的提问来源于stack exchange,提问作者Delinquent84
相关产品推荐
相关产品推荐

