我目前在Python上使用Selenium并且对它有疑问。
elements = driver.find_elements_by_css_selector("div.classname a")
for element in elements:
element.click()
driver.back()
由于在此代码中使用back()返回上一页,Selenium无法再找到元素,即使我仍然需要它。
如果有人有任何线索,请帮助我。
许多人提前欣赏
答案 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>