如何获取多个链接的下层标签,HTML包含多个多个类tag =“ blog-item-wrap”每个标签包含tag。需要获取所有带标签的href链接
<div class="blog-item-wrap">
<a href="https://website.com/data-wrangling-with/" title="Data
Wrangling with JavaScript">
</a>
</div>
<div .... >
<div class="blog-item-wrap">
<a href="https://website.com/data-wrangling-with/" title="Data
Wrangling with JavaScript">
</a>
</div>
</div>
使用它并得到错误:
StaleElementReferenceError:过时的元素引用:元素未附加到页面文档
browser.findElement(By.xpath('//*[@class="blog-item-wrap"]/a')).then(res => { res.getText().then(text => { console.log('text', text); }).catch(err => { console.log('err', err); });
答案 0 :(得分:1)
您应在带有getAttribute("href")
的所有元素上使用driver.findElements(By.xpath('//*[@class="blog-item-wrap"]/a'))
。
然后使用getAttribute("href")
遍历列表。
您应该考虑使用async
...
希望这对您有帮助!
答案 1 :(得分:1)
出现错误是因为从页面中删除或修改的元素尝试使用new_columns = ['key', 'Datetime', 'col1', 'col2', 'col3', 'col4', 'col5']
df = df.rename(columns=dict(zip(df.columns, new_columns)))
并使用Promise
来获取所有元素。
findElements()
非browser.get('https://..........')
.then(() => {
browser.findElements(By.xpath('//*[@class="blog-item-wrap"]//a'))
.then(res => {
var links = res.map(aTags => aTags.getText()) // .getAttribute("href")
Promise.all(links).then(texts => {
texts.forEach(text => console.log('text: ', text))
})
})
.catch(err => {
console.log('err: ', err);
});
})
Promise