【发布时间】:2021-03-23 17:39:11
【问题描述】:
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'
这会抛出一个属性错误,但是当我试图期待它时,它就不起作用了。当我关闭浏览器时,控制台中会出现代码错误。
它试图点击网站中的特定按钮,它们要么很多,要么很少,因此我使用了一个 while 循环来遍历“那里”的所有按钮
例如,如果.. 我删除了.click() 并保持原样,在我关闭浏览器之前它仍然没有错误,然后它就来了。我也不确定为什么当错误应该是NoSuchElementException时它会给出一个属性错误,因为当没有按钮时这个元素不存在! (是的,我也试过这个,但仍然有同样的问题)以及except AttributeError
所以如果一个按钮不存在,xpath 将无法工作,因为元素不存在,如果存在,它将在正确的索引中,所以如果第 5 个按钮在那里,它将是:@987654326 @
【问题讨论】:
-
属性错误是什么
-
你可以删除 try-expect 并添加你得到的错误
-
你能用方法添加完整的代码吗
-
感谢 PDHide 的回复,但我想通了并发布了答案,需要隐式等待。
-
你能让你的答案对stackover flow社区更有帮助吗,这个答案没有帮助。真正的问题是为什么它说 nonetype , find element 不应该返回 nonetype
标签: python selenium while-loop selenium-chromedriver try-except