为什么我有时会收到警告"Expected 'collections.Iterable', got 'WebElement' instead"?



使用Selenium的find_element(By.XPATH, "//tag[@class='classname']",当我尝试迭代某些类的元素时,Pycharm有时会发出以下警告:">应为"collections.Iterable",而得到了"WebElement">"。我不明白为什么它会迭代一些类而没有问题,而另一些则没有问题。这可能与不同的标签有关吗?

在下面的代码中,issues_available以绿色突出显示,并显示上述警告。

代码:

issues_available = driver.find_element(By.XPATH, "//div[@class='issue ember-view']")
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
///

当您编写此时

issues_available = driver.find_element(By.XPATH, "//div[@class='issue ember-view']")

现在issues_available是一个单独的web元素。

并且迭代单个web元素是没有意义的。

相反,您应该使用:

find_elements

其将返回web元素的列表。

因此,您的有效代码将是:

issues_available = driver.find_elements(By.XPATH, "//div[@class='issue ember-view']")
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

相关内容

最新更新