• ベストアンサー

pyhonでweb操作(imageをクリック)

pythonでweb操作をしたいです。 Chromeでログインするところまではできましたが、 クリックする箇所がimgになっており、どうやってクリックするのかわかりません。 色々調べてみたのですが、xpathを使っても下記のエラーが表示されます。 【エラー内容】 AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath' 【コード】 driver.find_element_by_xpath('//input[@type="image"][@src="/images/btnOrders.gif"]').click() 【画像のElements】 <a href="/Includes/SetMenuType.asp?MenuType=1"><img border="0" src="/images/btnOrders.gif"></a> 【Copy full Path】 /html/body/table/tbody/tr[4]/td[2]/a[1]

  • Python
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Copy Xpathの結果をそのまま使えば良いはずですが、 driver.find_element(By.XPATH, '/html/body/table/tbody/tr[4]/td[2]/a[1]/img').click() としても、Unable to locate elementというエラーになるのでしょうか?

aoaoaoki
質問者

お礼

redslove10さん うごきました! 最初の"/"が多かったようです・・・ ご教授いただきましてありがとうございました!

Powered by GRATICA

その他の回答 (2)

回答No.2

elementが見つからないと言っていますので、次の部分が正しいか確認してください。 '//input[@type="image"][@src="/html/body/table/tbody/tr[4]/td[2]/a[1]"]' 調べ方は下記ページの「欲しい要素のPATHを調べる」にあります。 https://pensama.com/find-element-xpath/

aoaoaoki
質問者

補足

色々調べて試してみたのですが、要素が見つからないようなメッセージが表示されます。 どのように記述したら良いのか教えていただけると助かります。 【Elements】 <img border="0" src="/images/btnOrdersPushed.gif"> 【Xpath】 /html/body/table/tbody/tr[4]/td[2]/a[1]/img 【full Xpath】 /html/body/table/tbody/tr[4]/td[2]/a[1]/img

回答No.1

以下の記載があるページを見つけました。 https://terakoya.sejuku.net/question/detail/23274 find_element_by_xpathは廃止となり使えなくなったため、以下のようにfind_elementをご使用お願いいたします。

aoaoaoki
質問者

補足

redslove10さん ありがとうございました。 参考に変更して実行したのですが、エラーが表示されました。XPATHの使い方も良くわかっておらず・・・ driver.find_element(By.XPATH, '//input[@type="image"][@src="/html/body/table/tbody/tr[4]/td[2]/a[1]"]').click() selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@type="image"][@src="/html/body/table/tbody/tr[4]/td[2]/a[1]"]"} (Session info: chrome=118.0.5993.118); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception

関連するQ&A

  • Ruby Selenium リンクの取得方法

    こんばんは。 Ruby初心者ですが、現在、Selenium Webdriver、chromeにはまり、スクレイピングのような事をしています。 そんな中で困っている事があるのですが、 とあるサイトの画像URLを取得、テキストに追記で書き出ししようと色々と調べたのですが全く分からず困っています。 <div class="hoge"> <img src="http://hoge" alt=""> </div> htmlはこんなようでxpathは/hoge/imgと仮定します。 open("hoge.txt", "a"){|f| output = driver.find_element(:xpath, '/hoge/img') f.puts "#{output.text}" } のように書いてみたもののテキストに改行しか出力されない状態です。 何卒どうかご教授、よろしくお願いします。

    • ベストアンサー
    • Ruby
  • 表の枠を消して、さらにその枠のスペースを消すには??

    具体的に書くと、 <table bgcolor="#fafafa" border="0" cellpadding="0" cellspacing="0" > <tbody> <tr> <td> <a href="../prof/prof.html" target="content" onmouseover="document.images['img4'].src='profile.gif';showMsg('プロフィール');" onmouseout="document.images['img4'].src='profiles.gif';showMsg('...');" ><img name="img4" src="profiles.gif"></a> </td> </tr> </tbody> ・ ・ ・ ・ </table> として、表に画像を入れてるのですが、表の枠は表示されないものの画像と画像の間にほんのわずかな隙間があります。 それすら完璧に消す方法ってありますか? IE6です。

    • ベストアンサー
    • HTML
  • pythonのfor文のエラーについて

    現在pythonでwebスクレイピングの勉強をしている者です。 質問があるのですが、 from selenium import webdriver browser=webdriver.Chrome() browser.get("https://movie.jorudan.co.jp/cinema/") #クラスからリンクを抜き出してクリックさせる。 siwake=[] elems=browser.find_elements_by_class_name("item-body") for i in elems:  elem=i.find_element_by_tag_name("a")  elem.click() #クラスのジャンルからaタグのテキストを抜き出して前のページに戻る。  elem=browser.find_element_by_class_name("genre")  elem=elem.find_element_by_tag_name("a").text  browser.back()   #抜き出した情報をsiwakeの空のリストに追加する。  siwake.append(elem) 上記のコードで映画のジャンルの一つ目を抜き取りたいのですが、for文を回すとエラーが出てしまいます。 エラーとしては、 elems=browser.find_elements_by_class_name("item-body") for i in elems: ……→elem=i.find_element_by_tag_name("a") 上の一文がエラーとして出てきます。 また、一番下にはMessage:stale element reference: element is not attached to the page document という表記が出てきます。   どなたか原因が解る方がいらっしゃいましたらご教示して頂けると幸いです。 参考HPはhttps://movie.jorudan.co.jp/cinema/です。 よろしくお願い致します。

  • スワップイメージ+ページ内移動(NN4.7)

    JavaScriptについて初心者です。どなたか分かる方いましたら、ご教授願います。 【仕様】 ボタンを押下すると、以下の挙動を同時にする。(ボタンは複数) ・同一ページ内の別の画像が切り替わる。 ・同一ページ内の指定した場所へ移動する。 いろいろと調べて以下のようなJavaScriptを作成しました。 <html> <head> <script type="text/javascript"> <!-- function chimg01(){ document.img01.src='images/img01_b.gif' document.location.replace("#a"); } function chimg02(){ document.img01.src='images/img01_c.gif' document.location.replace("#a"); } --> </script> </head> <body> <a name="a"></a> <img src="images/img01_a.gif" alt="あああ" width="400" height="200" name="img01"> --(省略)-- <a href="javascript:chimg01();"><img src="images/btn01.gif" alt="切り替えボタン" name="btn01" border="0"></a> <a href="javascript:chimg02();"><img src="images/btn02.gif" alt="切り替えボタン" name="btn02" border="0"></a> </body> 上記の記述で、IEなどは問題ないのですが、NN4.7の場合、ページをリロードしてしまい、画像の切り替えが効きません。 ブラウザ振り分けで、NN4.7のみ他のjsを読み込むようにした方が良いでしょうか? その場合の記述方法も分かれば、お願いしますm(-_-)m

  • スワップイメージとロールオーバーの組み合わせで…

    上の画像をクリックした時に下の画像が切り替わるページを 作ったのですが、上の画像をmouseoverで切り替えるのではなく、 マウスを動かしてもクリックしたら下の画像と連動して上の画像も 切り替えることってできますか?? javascriptは初心者で、まったくわからずです(>-<) <SCRIPT LANGUAGE="JavaScript"> function doPic(imgName) { stepOn = ("" + imgName); document.step.src = stepOn; } </script> (中略) <a href="javascript:doPic('step1.gif');"><img src="img1.gif" name="img" border="0" onmouseover='this.src="r_img1.gif"' onmouseout='this.src="img1.gif"'></a> <a href="javascript:doPic('step2.gif');"><img src="img2.gif" name="img" border="0" onmouseover='this.src="r_img2.gif"' onmouseout='this.src="img2.gif"' ></a><br> <img name="step" src="step1.gif"> ↑こんな感じで作っております<(_ _)>

  • クリックした自身の画像を別画像に入れ替えて表示

    前回質問したときに、解決したと思いましたが、動きがおかしいので 再質問します。 メニュー欄を画像にて表示し、画像クリックにて対象ページに飛ぶようになっています。 メニューをクリックした時、クリックした自身の画像を別画像に入れ替えて表示させようとしています。 onClick時に自分自身の画像を入れ替えし、リンク先が表示されるまで入れ替えた画像を表示したいのです。 下記のコードだと、クリック時、a_press.gif'は表示されず 何も表示されていない状態(背景画像)が見えてしまいます。 a_press.gif'<a href="http://www.yahoo.com/"> <img src="images/a_on.gif" onmouseover="this.src='images/a_rollover.gif';" onmouseout="this.src='images/a_on.gif';" onclick="this.src='images/a_press.gif'; this.onmouseover=null; this.onmouseout=null;"> </a> どなたかご教示いただけないでしょうか? よろしくお願いします。 IE,Firefox対応希望。

  • VBS で web上のOKボタンをクリックしたい

    IE上で表示されたOKボタンをクリックしたいのですが name="ボタン名" がなく クリックできないんです。 ソースは下記のようなソースで OKボタンにフォーカスすると javascript:void(0) とでたので objIE.Document.all("javascript:void(0);").click と記入してみたのですが クリックできないんです。 話し下手ですみませんが おわかりのかたいればご教示いただければ幸いです。 ********ソース <table cellspacing="0" cellpadding="0" border="0"> <tbody><tr> <td class="button-sl"><a href="javascript:void(0);" onclick="OpenAPage('steprequest.rtsx')" onkeypress="OpenAPage('steprequest.rtsx')"><img onmouseover="this.src='イメージ画像.gif'" onmouseout="this.src='イメージ画像.gif'" alt="YES" src="イメージ画像.gif" border="0"></a> </td>

  • pythonのfor文のエラーについて

    現在pythonでwebスクレイピングの勉強をしている者です。 質問があるのですが、 from selenium import webdriver browser=webdriver.Chrome() browser.get("https://movie.jorudan.co.jp/cinema/") #クラスからリンクを抜き出してクリックさせる。 siwake=[] elems=browser.find_elements_by_class_name("item-body") for i in elems: elem=i.find_element_by_tag_name("a") elem.click() #クラスのジャンルからaタグのテキストを抜き出して前のページに戻る。   elem=browser.find_element_by_class_name("genre") elem=elem.find_element_by_tag_name("a").text browser.back()   #抜き出した情報をsiwakeの空のリストに追加する。 siwake.append(elem) 上記のコードで映画のジャンルの一つ目を抜き取りたいのですが、for文を回すとエラーが出てしまいます。 どなたか原因が解る方がいらっしゃいましたらご教示して頂けると幸いです。 参考HPはhttps://movie.jorudan.co.jp/cinema/です。 よろしくお願い致します。

  • マウスオーバー・アウトの制御のソース

    複数のボタンでマウスオーバー・アウトの制御のソースを教えてもらったのですが、質問いたします。 この場合、このボタンはオーバーとアウト、それぞれ同じ画像を使用しているのですが、その場合でも全部違ったファイル名をつけなければいけないのでしょうか? 現在はそあしているのですが、何か無駄な気がして・・・。 よしくお願いします。 <SCRIPT LANGUAGE = "JavaScript"> <!-- if (document.images) { //if image object is available img1on = new Image(); // MouseOver Images img1on.src = "images/c1b.gif"; img2on = new Image(); img2on.src = "images/c2b.gif"; img3on = new Image(); img3on.src = "images/c3b.gif"; img1off = new Image(); // MouseOut Images img1off.src = "images/c1a.gif"; img2off = new Image(); img2off.src = "images/c2a.gif"; img3off = new Image(); img3off.src = "images/c3a.gif"; img4off = new Image(); } function imgOn(imgName) { if (document.images) { document[imgName].src = eval(imgName + "on.src"); }}   function imgOff(imgName) { if (document.images) { document[imgName].src = eval(imgName + "off.src"); }} //--> </SCRIPT>

  • サブウィンドウの画像を入れ替える

    初心者です。よろしくお願いします。 親ウィンドウからテキストリンクでサブウィンドウを開きます。 サブウィンドウには、基本的に2種類の画像があります。 親ウィンドウのテキストリンクは3種類(A、B、C)あり、Aのリンクをクリックしたときには、サブウィンドウの <img src="images/x_01.gif" name="sozai01" alt="" width="469" height="142"> <img src="images/x_02.gif" name="sozai02" alt="" width="469" height="142"> の2つの画像をそれぞれ指定する同じ大きさの画像(images/a_01.gifとimages/a_02.gif)に替えたいのですが、どうしたらいいのかさっぱりわかりません。どなたか教えていただけますでしょうか?

専門家に質問してみよう