実現したいこと
GAS利用者で、初めてGoogle Colabを利用しています。
Seleniumを使用してwebページのテーブルに値を入力したいのですが、うまくいきません。
どのようにコードを記載すべきか、ご教授いただければ幸いです。
一般的に公開されているサイトではない為、サイトをお伝えする事は出来ず、該当する部分のHTMLを別途記載致します。
入力さえできれば、ActionChains以外の方法でも構いません。
(初心者のため、方法が複数ある場合は、できるだけスタンダードな方法だと助かります。)
質問内容が不足していましたら、ご指摘いただければと思います。
よろしくお願いいたします。
発生している問題・分からないこと
action.moveToElement(present).click().sendKeys(present, text_present).perform()
上記で、ホバー・入力欄をクリック・文字を入力しているつもりですが、エラーとなってしまいます。
XPATHの「"//table[@id='work_info2']/tbody/tr[7]/td[1]"」は、ログ出力して確認しているので、場所の指定内容は、あっているだろうと考えております。
以下は、入力先サイト側のソースの中で、「日付1」のテーブル「td」内の「--」のところに入力したいです。
エラーメッセージ
error
1AttributeError Traceback (most recent call last) 2<ipython-input-3-a2b4039b409d> in <cell line: 70>() 3 68 action = ActionChains(driver) 4 69 present = driver.find_element(By.XPATH, "//table[@id='work_info2']/tbody/tr[7]/td[1]") 5---> 70 action.moveToElement(present).click().sendKeys(present, text_present).perform() 6 71 7 72 #present[0].send_keys(text_present) 8 9AttributeError: 'ActionChains' object has no attribute 'moveToElement'
該当のソースコード
Python
1# ■■■Google Colabで実行しているソース■■■ 2import google_colab_selenium as gs 3from selenium.webdriver.common.action_chains import ActionChains 4from selenium.webdriver.chrome.options import Options 5from selenium.webdriver.common.by import By 6 7# 待機時間 8from time import sleep 9 10# カスタムオプションの作成 11custom_options = Options() 12custom_options.add_argument("--window-size=1920,1080") 13 14# カスタムオプションを使用してChromeドライバーを起動 15driver = gs.Chrome(options=custom_options) 16 17# URLを開く 18driver.get(URL) 19 20#ここで「send_keys()」で入力し、ログイン等しています。ソースは割愛します。 21 22# 待機時間 23sleep(2) 24 25# 問題の入力部分です 26action = ActionChains(driver) 27present = driver.find_element(By.XPATH, "//table[@id='work_info2']/tbody/tr[7]/td[1]") 28action.moveToElement(present).click().sendKeys(present, text_present).perform() 29 30 31 32
HTML
1<!-- ■■■入力先サイトの該当ソース■■■ --> 2 3<table table width="100%" cellspacing="0" cellpadding="8" class="wtable work_info" id="work_info2"> 4 <tbody> 5・ 6・ 7・テールブル上部は省略 8・ 9・ 10<tr> 11 <th width="12%" align="left"> 12 日付1 13 </th> 14 <td width="15%"> 15 -- 16 </td> 17 <th align="left"> 18 日付2 19 </th> 20 <td colspan="3"> 21 -- 22 </td> 23 </tr> 24 </tbody> 25 </table>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
「send_keys()」で入力する
→エラーになる
→web記事にて、テーブルには「send_keys()」で入力できないと判明
→web記事を参考にActionChainsを使う方法を試す
→現在に至る
補足
特になし
回答2件
あなたの回答
tips
プレビュー