1.
i.find_element(By.XPATH,'//p[@]')在第二个循环中进行迭代时,不断重复获取第一个元素的原因是,开始处
//尝试从根/顶层定位元素,
而不是 作为的后代元素
i。这样,
p.partial_entry每次外循环的每次迭代都将继续返回第一个元素。
要搜索
i匹配的后代元素
p[@],xpath应该以开头
.//。这就是点的作用。
2. 对于该行
print i.find_element(By.CSS_SELECTOR, 'p.partial_entry'):
单身汉
find_element返回第一个找到的元素,如果找不到则抛出错误。有些’div.wrap’没有那个后代元素,所以您会得到
NoSuchElementException。
该
find_elements(注意“S”)方法返回元素的列表或一个空列表,如果没有找到,而不是一个错误。
因此,将所有这些放在一起:
>>> for i in driver.find_elements_by_xpath("//div[@]"):... for ent in i.find_elements_by_xpath('.//p[@]'):... print ent.text... if i.find_elements_by_css_selector('#REVIEWS .googleTranslation>.link'):... print 'translation available'... print # output clarity...顺便说一句,你为什么要混合
find_elements_by_xpath('...')在一起find_element(By.XPATH,'...')呢?坚持一种模式。



