次の単純化されたテストを使用して、私が使用するfind_by呼び出しの種類に関係なく、webdriverが目的の要素を見つけることができません。暗黙の待ち時間の後WebdriverがIE8の要素を見つけられません
import unittest
from selenium import webdriver
class Setups(unittest.TestCase):
def setUp(self):
self.browser = webdriver.Ie()
self.browser.implicitly_wait(15)
def tearDown(self):
self.browser.quit()
class IETest(Setups):
def test_ietest(self):
br = self.browser
br.get("http://www.gmail.com")
br.find_element_by_id("Email").send_keys("anything")
if __name__ == '__main__':
unittest.main(verbosity=2)
idを持つ要素を見つけることを試みて==次のエラーメッセージが出力に表示される電子メール:find_by_xpathとfind_by_css_selectorリターンを使用して同じテストを実行するための
test_ietest (__main__.IETest) ... ERROR
======================================================================
ERROR: test_ietest (__main__.IETest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "V:\Automation\Tests\web_ietest.py", line 23, in test_ietest
br.find_element_by_id("Email").send_keys("anything")
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 172, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 525, in find_element
{'using': by, 'value': value})['value']
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 144, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py"
, line 118, in check_response
raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: u'Unable to find element with id == Email'
----------------------------------------------------------------------
Ran 1 test in 19.707s
FAILED (errors=1)
試みを同じ結果。もちろん、同じサンプルテストはFirefoxでは問題なく実行されます。
Googleが私に失敗しました。なぜIEが明らかに存在するページ要素を見つけられないのかについての洞察はありますか?
技術情報:
- Windows 7の64ビット
- セレン2.4.0
- のPython 2.7.1
- のInternet Explorer 8.0.7601.17514 64ビット
追加の調査では、ページソースが完全にロードされていることがわかりますdとfind_elementが試行される前に修正してください。 GET(URL)との間に次の行とfind_element_by_idコールを印刷ページのソースと、「電子メール」のidを持つ要素を追加すると、存在している:
print unicode(br.page_source).encode("utf-8")
はちょうど印刷br.page_sourceしよういくつかのエンコーディングエラーを投げます。なぜなら、プリント行には、ユニコードエンコーディングが含まれているからです。 IEで作業しているときや、utf-8のエンコーディングが要素を見つけようとするのを妨げているかどうかは不明です。
だから、私は、本当の問題はこれです推測:誰もが成功した64ビットのInternet ExplorerとwebdriverをPythonのAPIを使用していますか?
暗黙の待機を200まで増やしても、同じ結果が返されます。ページは明らかに読み込みを終了しますが、find_elementは要素の位置を特定しません。 – Tfill
これはIE8、WinXP、Selenium 2.2、Javaの私のために働く。私がやっているのは、WebDriverドライバ=新しいInternetExplorerDriver(); driver.get( "http://www.gmail.com")です。 \t \t \t driver.findElement(By.id( "Email"))。sendKeys( "hello"); – nilesh
httpがコメント内で削除されていることをお知らせします。 – nilesh