Python Selenium在更改浏览器后保留元素

时间:2017-07-25 00:55:41

标签: python python-3.x selenium selenium-webdriver selenium-chromedriver

我目前在Python上使用Selenium并且对它有疑问。

elements = driver.find_elements_by_css_selector("div.classname a")
for element in elements:
    element.click()
    driver.back()

由于在此代码中使用back()返回上一页,Selenium无法再找到元素,即使我仍然需要它。

如果有人有任何线索,请帮助我。

许多人提前欣赏

2 个答案:

答案 0 :(得分:1)

Selenium在您更改页面时会创建一组全新的对象 - 无论是单击链接还是返回页面。如果单击第3行中的元素会导致Selenium加载新页面,那么您将在第二个元素测试中获得StaleElementException。所以你要做的就是每次执行driver.back()时,你需要像在第一行中那样搜索页面上的元素对象,并且可能至少维护一个计数器,列出列表的距离您已经点击的元素(假设它们离开页面)。有意义吗?

答案 1 :(得分:1)

您可以将元素存储在列表中并使用循环处理它们。例如:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<div class='container'>
<form class='form-horizontal'>
    <div class='form-group'>
       <input id='fname' type='text' class='form-control' placeholder='First Name'>
       <div class='help-block user-help'>First name missing</div>
    </div>
    <div class='form-group'>
        <button type='submit' class='btn btn-primary btn-block'>Sign Up</button>
    </div>
</form>
</div>