質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

2回答

1719閲覧

python selenium自動化するのに要素が取得できない

nnnkeita

総合スコア2

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2020/07/23 00:50

編集2020/07/24 04:13

python でseleiumで勤務表自動化を作成しています。
勤務表ホームページは右クリックが反応せず。要素が取得できず悩んで御有ります。
左下の方に javascript:disp(slide01')と表示されているのでそれを頼りに試していますが
クリックされません。

driver.execute_script(disp('slide01'))等

対策ご存じの方がいればご教授お願いいたします。

イメージ説明

〇ソースを追記しました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> <meta http-equiv="Content-type" NAME="" content="text/html;charset=Shift_JIS"> <title>勤務表システム</title> <SCRIPT LANGUAGE="JavaScript" SRC="../common/frameCommon.jsp"></SCRIPT> <SCRIPT LANGUAGE="JavaScript" SRC="../common/common.jsp"></SCRIPT> <SCRIPT LANGUAGE="JavaScript" SRC="../common/MessageCommon.jsp"></SCRIPT> <SCRIPT LANGUAGE="JavaScript" SRC="../common/WC020_js.jsp"></SCRIPT>
<SCRIPT> if(getSessionID() != "009D7BCD29B05AB40F78569D665EB257b48be4cd148850f0e308e2fd8e23ff5f6fbf5c0ff5295c8ed6b621586c765bdb"){ document.location = "/Lysithea/JSP_Files/authentication/WC010_1.jsp"; } </SCRIPT>
</HEAD> <FRAMESET ID=MainFrame COLS="360,*" > <frame name="MENU" src="WX010.jsp?SASFWSTATEID=_MAIN_STATE_&_REDIR_GMT_=1737f032d7f" scrolling="no" >
<frame name="OPERATION" src="../common/top_page.jsp?SASFWSTATEID=_MAIN_STATE_&_REDIR_GMT_=1737f032d7f" >
</FRAMESET> </HTML>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2020/07/23 08:41

そのページを selenium でアクセスした際の、HTMLソースコードを質問に記載したほうが、回答が付きやすいと思います。 可能であれば、HTMLのソースコードを質問に追記してみてください。
guest

回答2

0

勤務表ホームページは右クリックが反応せず

右クリックが何のために必要かは分かりませんが、見た感じfind_element_by_css_selectorやxpathで要素指定してclickするだけですよ

投稿2020/07/23 01:13

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnnkeita

2020/07/23 01:23

早速の返信ありがとうございます。 いつも自分のやり方だと 右クリックで検証 XPATHをコピーして element = driver.find_element_by_xpath('●●●●●') element.click() としてたのでそれができずに悩んでおります。
hentaiman

2020/07/23 01:25

例えばchromeならdeveloperツールで要素指定してxpath・cssselectorどちらの形式でも取得できますよ
nnnkeita

2020/07/23 01:57

そうです 通常であれば developerツールを開いて要素を右クリックcopy xpathを選択して●●●●●部分(上記コメント)に貼り付けて対応できますが それができません。 ある情報は画像左下の javascript:disp(slide01')となります。ちなみにchromeを使用しております。
hentaiman

2020/07/23 02:07

右クリックに言及されてますが、それは右クリックに限らず如何なる手段でもコンテキストメニュー自体が出せないという意味で言ってますか?
otn

2020/07/23 02:46

> それができません。 とは?? 具体的な現象は?
nnnkeita

2020/07/23 04:52

回答ありがとうございます。ファンクションキーF12等試して見て要素を取得することができましたが、 実行ができません。エラーメッセージは以下の様になります。 NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/center/table/tbody/tr/td/center/table/tbody/tr[4]/td/center/form/input"} (Session info: chrome=84.0.4147.89) このページはその他のボタン等もsekeniumでクリックできないのでセキュリティーの高いページで操作不可の可能性があるのでしょうか?
hentaiman

2020/07/23 05:21

ない。エラーメッセージ読んでみてください。 それとクリックの可否を確認したいのならそのページ開いた時点で手動操作に切り替えれば分かるので試してみてください。 エラー自体はxpathが間違っているか、dom生成前にdom取得しようとしているからなので、まずはdomの指定の仕方が正しいかを確認し、問題無いようならimplicitly_wait()を挟んで処理を待たせてみれば良いでしょう
nnnkeita

2020/07/23 06:14

ありがとうございます。 色々と手動にしたりと試してみました。  driver.find_element_by_xpath('//*@id="side00"]/center[1]/table/tbody/tr/td/table[2]/tbody/tr[6]/td[5]').click(); と手動に操作し xpathは確実に取得したつもりですが NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="side00"]/center[1]/table/tbody/tr/td/table[2]/tbody/tr[6]/td[5]"} (Session info: chrome=84.0.4147.89) とエラーは出てきます。引続き色々と試してみますが 差支えなければdomの指定の仕方について詳しくご教授いただきたいです。
hentaiman

2020/07/23 09:58

seleniumでその画面の表示までさせてそこから手動でクリックしてもダメだったって事?そうだとしたらもうseleniumじゃ無理ですよ。何か操作間違えてるだけだとは思いますけど、もはや自分で試さないと分からない。 > 差支えなければdomの指定の仕方について詳しくご教授いただきたいです。 正しい方法はそのページ見れなきゃ分かんないので無理ですよ。
guest

0

python

1driver.execute_script("disp('slide01')")

ならどうですか?

投稿2020/07/23 06:31

shirai

総合スコア1290

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnnkeita

2020/07/23 07:04

ありがとうございます driver.execute_script("disp('side01')")にて実行しました。 ⇒JavascriptException: Message: javascript error: disp is not defined (Session info: chrome=84.0.4147.89) とでたのでdispをとったり試しましたが無反応になります
shirai

2020/07/23 08:40

このタグにdisp('side01')というのは何属性でくっついてますか? action属性ですか?onclick属性ですか? 何かの属性にくっついているなら driver.find_element_by_xpath('//input[@hoge = "' + "disp('side01')" + '"]').click() でいけると思います hogeのところにactionとかonclickとか置き換えてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問