使用Selenium迭代元素时PyCharm报Iterable与WebElement类型不匹配警告的原因
报错原因
find_element() 方法无论匹配到多少符合规则的元素,永远只会返回单个 WebElement 对象,单个对象不属于可迭代类型,直接放在 for 循环里迭代就会触发你看到的类型警告,这个问题和你使用的标签种类没有任何关联。
你之前遇到的部分元素可以正常迭代的情况,本质是你当时调用的是末尾带s的 find_elements() 方法,这个方法会返回所有匹配到的 WebElement 组成的列表,本身就是可迭代类型,所以不会触发警告。
修复方案
- 把获取批量元素的方法从
find_element换成find_elements - 修正你第二行代码里XPATH缺失的路径标识:全局匹配加
//,相对父元素匹配加.
修复后代码示例:
# 改用find_elements获取所有符合条件的元素,返回列表支持迭代 issues_available = driver.find_elements(By.XPATH, "//div[@class='issue ember-view']") # 修正XPATH前缀,这里假设是全局匹配,添加// currently_clicked_issue = driver.find_element(By.XPATH, "//div[@class='issue active-override ember-view']") issues_list = [] for issue in issues_available: issue_vol_number = issue.find_element(By.XPATH, ".//span[@class='label']").text # 后续业务逻辑
内容的提问来源于stack exchange,提问作者double_wizz
相关产品推荐
相关产品推荐

