无法在selenium python中迭代元素

无法在selenium python中迭代元素,python,selenium,web-scraping,Python,Selenium,Web Scraping,我是一个硒noob,一直在努力用python完成事情。 我试图从这个页面上迭代所有的用户评论(“partial_entry”类) 即使我每次在for循环中选择不同的元素,但它会一遍又一遍地打印相同的元素。(我必须保留最后一个if块&不能删除它,因此无论解决方案是什么,都必须包括该if块) =======编辑=================== 即使这样也不起作用(根据法律,这实际上应该起作用)。我不知道硒是怎么回事 print i.find_element(By.CSS_SELECTOR, '

我是一个硒noob,一直在努力用python完成事情。 我试图从这个页面上迭代所有的用户评论(“partial_entry”类)

即使我每次在for循环中选择不同的元素,但它会一遍又一遍地打印相同的元素。(我必须保留最后一个if块&不能删除它,因此无论解决方案是什么,都必须包括该if块)

=======编辑===================

即使这样也不起作用(根据法律,这实际上应该起作用)。我不知道硒是怎么回事

print i.find_element(By.CSS_SELECTOR, 'p.partial_entry')
输出:

NoSuchElementException:

1。在第二个循环中,在迭代
i.find\u元素(By.XPATH,//p[@class=“partial\u entry”]”)时不断重复获取第一个元素的原因是开始时
/
尝试从根/顶层定位元素,而不是作为
i
的子元素。因此,对于外部循环的每次迭代,只需返回第一个
p.partial_条目
元素

要搜索与
p[@class=“partial_entry”]
匹配的
i
的子元素,xpath应该以
/
开头。这就是圆点的作用

2.对于行
打印i.find\u元素(By.CSS\u选择器,“p.partial\u条目”)

单个
find_元素
返回找到的第一个元素,如果没有找到,则抛出错误。有一些'div.wrap'没有该子元素,因此您将得到
NoTouchElementException

find_elements
(注意“s”)方法返回元素列表,如果没有找到元素,则返回空列表,而不是错误

因此,把所有这些放在一起:

>>> for i in driver.find_elements_by_xpath("//div[@class='wrap']"):
...     for ent in i.find_elements_by_xpath('.//p[@class="partial_entry"]'):
...         print ent.text
...         if i.find_elements_by_css_selector('#REVIEWS .googleTranslation>.link'):
...             print 'translation available'
...     print  # output clarity
...


顺便说一句,为什么要将
find_elements\u by_xpath(“…”)
find_element(by.xpath,“…”)
混合使用呢?坚持一种模式。

你的问题不清楚。使用某些类、属性等对元素进行迭代,并不能告诉我们您到底想做什么。你可以这样说,我正在尝试迭代并打印所有四星评论或单击所有建议链接等@testerjoe2我正在尝试打印所有用户评论(“部分输入”类),当我运行你的代码时,它的主要元素如下。。。。。回顾2016年2月1日Andre_Barbosa_83,Joao Pessoa,PB=============================================================================================其主要评论与预期一致..您想要什么print@thebadguy你能帮我回答另一个问题吗?@shalini.。是的……哪个问题
>>> for i in driver.find_elements_by_xpath("//div[@class='wrap']"):
...     for ent in i.find_elements_by_xpath('.//p[@class="partial_entry"]'):
...         print ent.text
...         if i.find_elements_by_css_selector('#REVIEWS .googleTranslation>.link'):
...             print 'translation available'
...     print  # output clarity
...