webdriver node js在类标记下获取多链接

时间:2018-12-16 15:50:11

标签: javascript selenium selenium-webdriver

如何获取多个链接的下层标签,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); });

2 个答案:

答案 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