Selenium JS中如何查找元素并为其添加类?
解决Selenium JS中为元素添加类的问题
你遇到的错误是因为Selenium的WebElement对象并非浏览器原生DOM元素,classList是浏览器DOM节点的专属属性,直接在WebElement上调用会返回undefined,自然无法执行add方法。
正确的做法是通过Selenium的executeScript方法,在浏览器的JavaScript上下文里执行DOM操作:
方法一:先定位元素再传入执行
// 先找到目标元素 const targetElement = await driver.findElement(By.css(".promotion-code-group.promo-shown .promo-selector")); // 在浏览器上下文执行classList.add操作 await driver.executeScript("arguments[0].classList.add('show');", targetElement);
方法二:直接在浏览器上下文定位并操作
await driver.executeScript(` const element = document.querySelector(".promotion-code-group.promo-shown .promo-selector"); // 加判断避免元素不存在时报错 if (element) { element.classList.add('show'); } `);
额外提示
如果元素可能未完全加载,建议搭配显式等待确保元素存在:
const { WebDriverWait, until } = require('selenium-webdriver'); const targetElement = await new WebDriverWait(driver, 10).until( until.elementLocated(By.css(".promotion-code-group.promo-shown .promo-selector")) ); await driver.executeScript("arguments[0].classList.add('show');", targetElement);
内容的提问来源于stack exchange,提问作者frustrated-dev
相关产品推荐
相关产品推荐

