python - 遍历页面上的按钮/图块时出现 StaleElementReferenceException
问题描述
我正在网页抓取https://www.bell.ca/Mobility/Smartphones_and_mobile_internet_devices并且当一个人选择一部手机并继续选择一个计划作为“新客户”时,通常有两个或三个按钮:“premium ultra”、“premium plus” ',等等。我已经获得了这些图块的 css 选择器,但是当我进入第三次迭代时,我得到了一个'StaleElementReferenceException'。
我已经设置了尝试/异常,但是我更愿意通过所有的瓷砖,因为我的代码的下一部分涉及遍历下面的“计划和数据选项”。
plantypes = driver.find_elements_by_css_selector('#prod-term-radio .hot-tile')
print(len(plantypes)) #number of plan types.
for plan in plantypes:
try:
plan.click()
time.sleep(3)
except exceptions.StaleElementReferenceException as e:
pass
我希望能够遍历所有图块,而不是在第二个图块之后过早地切掉。
解决方案
单击后您必须刷新元素列表,因为DOM
已更新,导致元素过时,试试这个;
plantypes = driver.find_elements_by_css_selector('#prod-term-radio .hot-tile')
print(len(plantypes)) #number of plan types.
for count, plan in enumerate(plantypes):
try:
ptypes = driver.find_elements_by_css_selector('#prod-term-radio .hot-tile')
ptypes[count].click()
time.sleep(3)
except exceptions.StaleElementReferenceException as e:
pass
推荐阅读
- android - Retrofit transform my fields Int in String
- scikit-learn - 根据其功能集的泡菜模型
- javascript - 在 2 个 React DOM 之间传递数据
- sql - SQL Group BY COLUMN 选择特定行
- php - 如何将 HTML 文件分解成更易于管理的块 - A-frame on Glitch
- android - 添加另一个依赖项时出现 UnsatisfiedLinkError
- c++ - Nan::Utf8String 的 C++ 语法
- swift - 使 NSTableView 行保持选中 Swift
- asp.net - 在编辑按钮上单击网格视图中的一行在文本框中显示网格数据
- episerver - 仅在实时 - 通配符自定义重定向不起作用(BVN 404 处理程序)