[解決済み] Selenium Element not visible exception
2022-02-06 02:55:12
質問内容
ウェブサイト上のボタンをクリックするパーサーを書くことを任されたのですが、ボタンの1つだけをクリックするのに問題があります。 次のコードは、1つのボタンを除くすべてのボタンで動作します。
以下がそのhtmlです。 http://pastebin.com/6dLF5ru8
ソースのhtmlはこちらです。 http://pastebin.com/XhsedGLb
pythonのコードです。
driver = webdriver.Firefox()
...
el = driver.find_element_by_id("-spel-nba")
actions.move_to_element(el)
actions.sleep(.1)
actions.click()
actions.perform()
このエラーが発生します。
ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
Saifurのように、私はちょうど同じ要素が表示されていない例外で待機を試してみました。
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.XPATH, "//input[contains(@id,'spsel')][@value='nba']"))).click()
解決方法は?
ページのソースを見ると、ほとんどすべての
SELECT
,
DIV
要素は
faked
であり、JavaScriptから作成されるため、webdriverでは
見る
を使用します。
しかし、回避策があります。
ActionChains
を実行して開発者コンソールを開き
人工
目的の要素にCLICKする。
ラベル
をトリガーに
NBA
データの読み込み...以下はその例です。
from selenium import webdriver
from selenium.webdriver.common import action_chains, keys
import time
driver = webdriver.Firefox()
driver.get('Your URL here...')
assert 'NBA' in driver.page_source
action = action_chains.ActionChains(driver)
# open up the developer console, mine on MAC, yours may be diff key combo
action.send_keys(keys.Keys.COMMAND+keys.Keys.ALT+'i')
action.perform()
time.sleep(3)
# this below ENTER is to rid of the above "i"
action.send_keys(keys.Keys.ENTER)
# inject the JavaScript...
action.send_keys("document.querySelectorAll('label.boxed')[1].click()"+keys.Keys.ENTER)
action.perform()
または、すべての
ActionChains
コマンドを実行することで、単純に
execute_script
のようにします。
driver.execute_script("document.querySelectorAll('label.boxed')[1].click()")
これで、少なくとも私のローカルファイルでは、とにかく...。これが役に立つといいのですが
関連
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] 辞書から要素を削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない