如何在Selenium JavaScript中获取每个父元素下的子元素文本?
在Selenium JavaScript中获取父元素下各子元素的文本
你现在的代码问题在于,每次调用e.getText()都会获取整个父元素的所有文本内容,没办法区分title、body和footer各自的内容。要解决这个问题,核心是在每个父元素的上下文范围内单独查找对应的子元素,再获取它们的文本。
下面是修正后的完整代码:
let driver = new Builder().forBrowser('chrome').build(); let searchResults = await driver.findElements(By.css('.parent')); for (let parent of searchResults) { // 在当前父元素内部查找子元素,而不是整个页面 let title = await parent.findElement(By.css('.title')).getText(); let body = await parent.findElement(By.css('.body')).getText(); let footer = await parent.findElement(By.css('.footer')).getText(); // 这里可以根据需求处理文本,比如打印或者存入数组 console.log(`父元素内容:标题=${title},正文=${body},页脚=${footer}`); }
关键说明:
- 使用
parent.findElement()替代全局的driver.findElement(),这样查找范围被限定在当前遍历的父元素内部,确保拿到的是该父元素下对应的子元素。 - 如果担心某些父元素可能缺少某个子元素(比如没有footer),可以用
findElements先判断是否存在,再处理:let footerElements = await parent.findElements(By.css('.footer')); let footer = footerElements.length > 0 ? await footerElements[0].getText() : '无页脚';
这样就能精准获取每个父元素下各子元素的文本内容啦!
内容的提问来源于stack exchange,提问作者Ryuk
相关产品推荐
相关产品推荐

