Python Selenium中WebElements列表迭代问题求助
Selenium处理表格WebElements迭代异常问题
初始获取的WebElements列表顺序与屏幕显示一致,但等待元素失效重新获取后,列表顺序发生混乱,导致迭代处理时出现跳过或错误处理元素的问题。
我的元素文本列表示例如下:
elementList = ["some title-part 3.mp3", "some title-part 4.mp3", "Some Title, Part 1", "Some Other Title, Part X"]
我需要将列表中的.mp3文件重命名为从文件读取的对应标题。初始循环i=0时,成功处理了"some title-part 3.mp3",但等待元素失效后,"some title-part 4.mp3"变成了elementList[0],而此时i已经递增到1,导致跳过了这个mp3文件,错误地处理了其他元素。我曾尝试在列表顶部添加缓冲文件,但还是会错过下一个mp3文件。
现有代码如下:
# 元素文本列表为 ["some title-part 3.mp3", "some title-part 4.mp3", "Some Title, Part 1", "Some Other Title, Part X"] elements = wait.until(EC.visibility_of_all_elements_located((By.XPATH, myTablePath))) for i in range(len(elements)): if (".mp3" in element.text): renameElementTitle(elements[i]) # 此操作会离开当前列表页面 wait.until(EC.staleness_of(element)) # 等待元素失效 elements = wait.until(EC.visibility_of_all_elements_located((By.XPATH, myTablePath))) # 重新获取后的列表顺序混乱,迭代逻辑出错
我考虑用list.pop()来处理,但不确定具体实现方式,思路如下:
# 大概是这样? elements = wait.until(EC.visibility_of_all_elements_located((By.XPATH, myTablePath))) someIndex = 0 while(len(elements) > 0): if (".mp3" in element[someIndex].text): correctTitle = getCorrectTitleFromList(element[someIndex]) # 存储正确标题,用于后续查找新索引 renameElementTitle(elements[someIndex]) # 正常重命名标题 wait.until(EC.staleness_of(element)) elements = wait.until(EC.visibility_of_all_elements_located((By.XPATH, myTablePath))) renamedTitleIndex = elements.somehowFindIndexOf(correctTitle) # 找到新标题文本的索引 elements.pop(renamedTitleIndex) # 移除该索引对应的元素 else: elements.pop(someIndex) someIndex++
有没有简单方法能在更新列表后保持顺序,避免迭代异常?
内容的提问来源于stack exchange,提问作者dbarnes
相关产品推荐
相关产品推荐

