0

私はセレンを試しています。Selenium IDE を使用して簡単なスクリプトを作成しました。ページにログインし、「検索」ウィンドウを開き、検索を実行して、結果の 1 つを開きます。

Selenium IDE でテストを実行すると、問題なく動作します。Java JUnit 4 テスト ケースにエクスポートすると、正常に動作します。しかし、Python 2 単体テストにエクスポートすると、xpath 検索は非常にバグがあるようです...

ページには name='keyword' の入力要素があります。Javaを使用して検索するとdriver.findElement(By.name("keyword"));、すべて問題ありません-要素が見つかります。

で python を使って検索するとbrowser.find_element_by_name("keyword")、見つからないようです。2 つ目は、 firebugbrowser.find_element_by_xpath("//input[@name='keyword']")と機能browser.find_element_by_xpath("/html/body/form/div/ul/li[2]/input")を使用したときに得られる xpathCopy XPathです。

入力を検索する前にPythonコードに遅延を追加しようとしましたが、役に立ちませんでした。

Python呼び出しが要素を見つけられないように見える理由を誰かが知っていますか? これは、Web アプリのページ全体のさまざまな要素で発生するようです (ただし、これまでに見つけた Selenium IDE では発生しません)...

皆さんが提供できる助けに感謝します!

編集

コンソールに表示されるエラーは次のとおりです。

Traceback (most recent call last):
  File "test.py", line 37, in <module>
    elem = browser.find_element_by_xpath("/html/body/form/div/ul/li[2]/input")
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 213, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 671, in find_element
    {'using': by, 'value': value})['value']
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 156, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: u'Unable to locate element: {"method":"xpath","selector":"/html/body/form/div/ul/li[2]/input"}'

乾杯

ジャレット

4

2 に答える 2

0

リンクがクリックされたときに Web サイトは新しいウィンドウを開いていましたが、ドライバーはまだ古いウィンドウを参照していました。Selenium IDE エクスポートがそれをキャッチしなかった理由がわかりません。

とにかく、ドライバーのウィンドウを新しく開いたウィンドウに設定する必要がありましたが、問題なく動作しました。

これが他の人に役立つことを願っています。

乾杯

ジャレット

于 2012-10-26T14:21:31.227 に答える
0

iframe 内にあるかどうかを確認します。iframe 内にある場合は、その iframe に移動する必要があります。

driver.switch_to.default_content() 
driver.switch_to_frame("fameid")
于 2018-11-29T09:12:47.273 に答える