2

我目前在Python上使用Selenium,并且对它有个疑问。Python Selenium改变浏览器后保留元素

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

由于使用回来的前一页回()在此代码,硒找不到元素了,尽管我仍然需要它。

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

许多赞赏提前当您更改页面

回答

1

您可以将元素存储在列表中并使用循环对其进行处理。例如:

elementList = driver.find_elements_by_css_selector("div.classname a") 
for i in range(len(elementList)): 
    element = driver.find_elements_by_css_selector("div.classname a")[i] 
    element.click() 
    driver.back() 
1

硒创建一整套新的对象 - 无论你点击一个链接,或返回的页面。如果单击第3行中的元素会导致Selenium加载新页面,则第二个元素测试会得到StaleElementException。所以你必须做的是每次执行driver.back()时,都需要像在第一行那样搜索页面上的元素对象,并且至少可以维护一个计数器,你已经点击过的元素(假设他们离开页面)。合理?

+0

感谢您的亲切回答。我不确定明白你的意思,你推荐我保存链接,然后用driver.get(url)之类的函数浏览它们。我理解得好吗? 但是,在我的实验中,需要“单击链接的动作”,而不仅仅是driver.get(url)类似的东西。 – Joon

相关问题