1

Python でセレンを使用していますが、存在しない要素を検索すると常にフリーズします。私は本当にすべてを試しました(Firefoxバージョン17.0.1):

>>> import selenium
>>> selenium.__version__
'2.26.0'
>>> from selenium import webdriver
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> ff = webdriver.Firefox()
>>> ff.implicitly_wait(5)
>>> ff.set_page_load_timeout(5)
>>> ff.set_script_timeout(5)
>>> waiter = WebDriverWait(ff, 5)
>>> waiter.until(lambda ff: ff.find_element_by_name("foo"))

その最後のコマンドは無期限にフリーズします。firefox が要素を見つけられなかったときに、永久にハングアップするのではなく、単純に None を返すか、例外をスローするようにするにはどうすればよいですか? セレン2.26.0を使用しています

4

3 に答える 3

1

ここにある回答に基づいて

Firefox 17 と Selenium 2.26.0 を使用している場合、欠陥 #4814 が発生しています: http://code.google.com/p/selenium/issues/detail?id=4814

于 2013-01-11T17:05:15.133 に答える
1

バージョン 2.26.0 のバグのようでpip install selenium==2.27.0、私のコンピューターで修正されました。

于 2013-01-11T17:12:22.873 に答える
0

今のところ、次の回避策を使用しています。

def selenium_safe_find_element_by_name(ff, element_name):
    elements = ff.find_elements_by_name(element_name)
    if not elements:
        raise ValueError("<name=%s> not found" % (element_name,))

    return elements[0]

しかし、これはその回避策がなくても何とか機能するはずです。

于 2013-01-11T16:49:49.317 に答える