我使用selenium从网页收集信息。有两种网页,一种需要按下按钮显示所需信息,另一种需要直接显示信息。
try:
BrowserObj_dirver.find_element_by_xpath("//li[@id='tab-item-relationships']/a").click()
test=BrowserObj_dirver.find_elements_by_xpath("//div[@class='enum']/a")
for t in test:
if t.text not in sha256:
sql2="insert into sha2 values (%d,'%s')" % (virusId,t.text)
sha256.append(t.text)
cursor.execute(sql2)
db.commit()
virusId=virusId+1
print t.text
except NoSuchElementException:
print "no button"
(and operation for no button page here)
try:
BrowserObj_dirver.find_element_by_xpath("//li[@id='tab-item-relationships']/a").click()
test=BrowserObj_dirver.find_elements_by_xpath("//div[@class='enum']/a")
for t in test:
if t.text not in sha256:
sql2="insert into sha2 values (%d,'%s')" % (virusId,t.text)
sha256.append(t.text)
cursor.execute(sql2)
db.commit()
virusId=virusId+1
print t.text
except NoSuchElementException:
print "no button"
(and operation for no button page here)
但是当NoSuchElementException遇到时需要更多的时间,通常是7s -10s。原因是什么?
答案 0 :(得分:0)
尝试将隐式等待时间设置为您想要的值,例如BrowserObj_dirver.implicitly_wait(10) # seconds
这适用于驱动程序从此时开始执行的每个findElement。当然,如果将等待时间设置得非常低,则findElement可能不会等待仍在加载的元素。
或者,您可以使用WebDriverWait的变体,请参阅此文档以获取初学者:http://selenium-python.readthedocs.org/en/latest/waits.html