5

要素の send_keys() を呼び出す前に、例外が発生しないように、要素が有効で表示されているかどうかをまず確認します。

is_Displayed が True を返し、その要素に send_keys を実行しようとすると、ElementNotVisible の例外が発生します。これは何らかの形のバグですか?

一部の Web サイトでは機能しますが、別の Web サイトでは機能しません。

def login():
 elem = browser.find_elements_by_xpath('//input[contains(@name, "user")]')
 for elements in elem:
  if elements.is_displayed():
   if elements.is_enabled():
    elements.send_keys(username)
    elem = browser.find_elements_by_xpath('//input[contains(@name, "pass")]')
    for elements in elem:
     if elements.is_displayed():
       if elements.is_enabled():
        elements.clear()
        elements.send_keys(password + Keys.RETURN)   #Crashes here
        time.sleep(4)
        return
4

3 に答える 3

3

まだ何が問題なのか疑問に思っている人がいれば、それはページが完全にロードされた後に JavaScript が要素を隠していたことが原因でした。

ページ上の JavaScript を完全に無効にすると、その問題は解決しました。

于 2015-07-19T18:39:11.533 に答える
3

これを試して:

def login():
 user_elements = browser.find_elements_by_xpath('//input[contains(@name, "user")]')
 for user in user_elements:
  if user.is_displayed():
   if user.is_enabled():
    user.send_keys(username)
    pass_elements = browser.find_elements_by_xpath('//input[contains(@name, "pass")]')
    for passw in pass_elements:
     if passw.is_displayed():
       if passw.is_enabled():
        passw.clear()
        passw.send_keys(password + Keys.RETURN)   #Crashes here
        time.sleep(4)
        return

変数名の選択により、外側のループが内側のループで上書きされる可能性があります。

于 2013-07-25T23:24:35.670 に答える