python selenium在尝试exception时使用.click()时while循环中的属性错误


i=1
while i<=numberCountGlobal:
time.sleep(1)
print("i is: ",i)
self.tempString='//*[@id="grid-view"]/div[{}]/div[4]/button'.format(i)
try:
self.driver.find_element_by_xpath(self.tempString).click()
print("button press sucessfull")
except NoSuchAttributeException:
print("Nothing here.. skipping")
i+=1

错误:

self.driver.find_element_by_xpath(self.tempString).click()
AttributeError: 'NoneType' object has no attribute 'click'

这抛出了一个attributeError,但当我试图期望它时,它就是不起作用。当我关闭浏览器时,控制台中会出现代码错误。

它试图点击网站中的一个特定按钮,要么有很多,要么有几个,因此我使用while循环来循环浏览所有"按钮;有";

例如,如果。。我删除了.click()并保持原样,它仍然不会出错,直到我关闭浏览器,然后它就来了。此外,我不确定为什么它会给出一个属性错误,而错误应该是NoSuchElementException,因为当没有按钮时,这个元素不在那里!(是的,我也试过了,但仍然有同样的问题(以及except AttributeError

因此,如果一个按钮不在那里,xpath将不会像元素不在那里那样工作,如果是,它将在正确的索引中,因此,如果第5个按钮在那里,它将是://*[@id="grid-view"]/div[5]/div[4]/button

我不知道selenium,但如果异常没有捕捉到它,那么这意味着您有错误类型的异常。它是一个";属性错误";而不是你所说的";self.driver.find_element_by_xpath(self.tempString("正在返回为";无"根据我对BeautifulSoup的工作,这可能是因为它找不到具有self.tempString的xpath的元素;无。点击((,";当"无"显然没有单击属性时。

我希望这能有所帮助。

修复:在尝试后添加一个隐含的等待:

i=1
while i<=numberCountGlobal:
time.sleep(1)
print("i is: ",i)
self.tempString='//*[@id="grid-view"]/div[{}]/div[4]/button'.format(i)
try:
self.driver.implicitly_wait(1)
self.driver.find_element_by_xpath(self.tempString).click()
print("button press sucessfull")
except NoSuchAttributeException:
print("Nothing here.. skipping")
i+=1```

最新更新