当NoSuchElementException遇到时,在selenium中按xpath查找元素会花费更多时间

时间:2015-04-13 10:01:47

标签: python selenium xpath

我使用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。原因是什么?

1 个答案:

答案 0 :(得分:0)

尝试将隐式等待时间设置为您想要的值,例如BrowserObj_dirver.implicitly_wait(10) # seconds

这适用于驱动程序从此时开始执行的每个findElement。当然,如果将等待时间设置得非常低,则findElement可能不会等待仍在加载的元素。

或者,您可以使用WebDriverWait的变体,请参阅此文档以获取初学者:http://selenium-python.readthedocs.org/en/latest/waits.html