2017-08-24 3 views
-2

私はPython 3を使用しています.Seleniumを使用してデータをWebサイトから削り取ろうとしています。私は私が必要とするデータを表示するために、リスト項目からクラスを削除する必要があり、これはコードです:Python 3 SeleniumがJavaScriptを実行できません

driver.execute_script("document.getElementsByClassName('otherClassName isSelected').classList.remove('isSelected');") 

が、私はまた

を試してみました

"selenium.common.exceptions.WebDriverException: Message: unknown error: Cannot read property 'remove' of undefined"

エラーを取得します

driver.execute_script("document.getElementsByClassName('otherClassName isSelected').setAttribute('class', 'otherClassName')") 

が、その後、私は取得

selenium.common.exceptions.WebDriverException: Message: unknown error: document.getElementsByClassName(...).setAttribute is not a function

+0

あなたのスクリプトは、おそらく間違っているとのthatsですなぜセレンがあなたにエラーを与えているのですか?ブラウザ開発者コンソールを起動し、このJSをコンソールで実行します。そこを走ってからセレンで確認してください。 –

+0

良いアイデア、私はこのように問題を見つけ出し、私の質問に答えました。ありがとう@ TarunLalwani – Heuristics

答えて

0

複数のクラスの更新をの要素に同時に適用しようとしていますが、setAttribute()はその時点で1つの要素に変更を適用できるので、これはあなたが推測します。

P.S.

js = """document.querySelectorAll('.otherClassName.isSelected') 
    .forEach(x=> x.setAttribute("class","otherClassName"));""" 
driver.execute_script(js) 

代わりに、コードの下に試してみてくださいXY problemのようですが、通常はページスクレイピング中にページソースを変更する必要はありません。あなたは、私がクラスで要素を取得した後、[0]を追加するのを忘れていた

0

あなたの最初の問題の詳細を共有する必要があるので、正しいコードは次のようになります。

driver.execute_script("document.getElementsByClassName('otherClassName isSelected')[0].classList.remove('isSelected');") 
関連する問題