Python Webdriver返回有效XPath的NoTouchElementException,元素存在且正确

Python Webdriver返回有效XPath的NoTouchElementException,元素存在且正确,python,html,dom,xpath,selenium-webdriver,Python,Html,Dom,Xpath,Selenium Webdriver,一个页面上有20个Google review score元素,例如: 是在XPath中定义的,因此: //ol/div[2]/div/div/div[2]/div[%s]/div/div[3]/div/a[1]/div/div/div[2]/div/span 使用Python和WebDriver,我可以提取这些,因此结果是1,21范围内的I: reviewCount = driver.find_element_by_xpath("//ol/div[2]/div/div/div[2]/div

一个页面上有20个Google review score元素,例如:

是在XPath中定义的,因此:

  //ol/div[2]/div/div/div[2]/div[%s]/div/div[3]/div/a[1]/div/div/div[2]/div/span
使用Python和WebDriver,我可以提取这些,因此结果是1,21范围内的I:

reviewCount = driver.find_element_by_xpath("//ol/div[2]/div/div/div[2]/div[%s]/div/div[3]/div/a[1]/div/div/div[2]/div/span" % result).text
出于某种我还没有确定的原因,每当review count为零,文本为“No Reviews”时,就会返回一个NoSuchElementException。有人会认为上面的XPath确实会继续工作,在Firebug中查看它的XPath证明它遵循的结构与这样一个非零分的元素完全相同。因此,我目前正在尝试解决这个问题:

try:
    reviewCount = driver.find_element_by_xpath("//ol/div[2]/div/div/div[2]/div[%s]/div/div[3]/div/a[1]/div/div/div[2]/div/span" % result).text
    reviewCount = int(reviewCount.split()[0].replace(',',''))
except NoSuchElementException, e:
    reviewCount = 0
在我的程序中,从时间的角度来看,这是非常昂贵的。每次遇到无评论时,程序都需要几秒钟来处理它。为了加快速度,我可以尝试使用find_elementS_by_xpath一次性获取所有复习分数。但是,我如何解释递增的div索引呢?我如何仍然为每个元素维护某种类型的异常处理

//ol/div[2]/div/div/div[2]/div[1]/div/div[3]/div/a[1]/div/div/div[2]/div/span
//ol/div[2]/div/div/div[2]/div[2]/div/div[3]/div/a[1]/div/div/div[2]/div/span
etc.

更重要的是,为什么Webdriver为一个存在且正确且仅在文本值上不同的元素返回NoTouchElementException

使用xpath多个条件

示例:-

//input[@id='username' or @name='pwd']
请参阅以下线程:-

http://stackoverflow.com/questions/12562597/two-conditions-using-or-in-xpath