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

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

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

selenium

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

Q&A

解決済

2回答

2831閲覧

どうして見つからないの??

hiro_a

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

selenium

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

0グッド

0クリップ

投稿2021/10/12 12:44

編集2021/10/12 13:05

Excel VBA + Selenium でスクレイピングのプログラムを作ろうとしています。

初めにサイトにログインしないといけないのですが、ログインフォームに
IDとパスワードを入力するところで躓いてしまいました。

FindElementByXPathメソッドを使ってログインIDを入力するテキストボックスを
指定したのですが、XPath、フルパスともに失敗してしまいます。

いずれの場合も出てきたエラーメッセージは以下のとおりです。
NoSuchElementError
Element not found for XPath...

以下は他のサイトにあったサンプルコードをベースに作ったものです。

----- ここから共通 -----
Dim Driver As New Selenium.WebDriver
Dim Elm As Selenium.WebElement
Dim sKeys As New Selenium.Keys

Dim strURL As String On Error GoTo ErrHandler Main = False ' SeleniumでChromeを使うことを宣言 Driver.Start "chrome" ' タオバオログインページへ遷移 strURL = "https://world.taobao.com/wow/z/oversea/SEO-SEM/ovs-pc-login" Driver.Get strURL

----- ここまで共通 -----

パターン①XPathで指定
' ①ユーザーID入力(XPath)
Set Elm = Driver.FindElementByXPath("//*[@id=""fm-login-id""]")
Elm.SendKeys Sheets("menu").Range("d3")

パターン②フルパスで指定
' ②ユーザーID入力(フルパス)
Set Elm = Driver.FindElementByXPath("/html/body/div[1]/div/div[2]/div/form/div[1]/div[2]/input")
Elm.SendKeys Sheets("menu").Range("d3")

①のパターンでも②のパターンでもFindElementByXPathのところで前述の
エラーが発生します。

対象のサイトは中国のECサイトタオバオのログインフォームです。
URLは以下です。

https://world.taobao.com/wow/z/oversea/SEO-SEM/ovs-pc-login

どこが間違っているのかわからない状態です。
IDとパスワードを入力して、ログインボタンが押下できればいいので、使用するメソッドは
FindElementByXPathにこだわってもいません。

記述間違いもしくは別の方法をご教授いただければ幸いです。
よろしくお願いします。

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

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

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

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

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

y_waiwai

2021/10/12 12:50

コードを提示しましょうよ
cx20

2021/10/12 14:33

試しては無いですが iframe になっているのが原因な気がします。
m.ts10806

2021/10/12 23:28

そもそもスクレイピング許可取られてるのでしょうか
hiro_a

2021/10/14 00:51

ご指摘いただいた通り、iframeが原因だったようです。 SwitchToFrameでターゲットを切り替えてやれば無事に動作しました。 iframeを使われてるときはターゲットフレームを変えてやらないと、単純にXPathを指定してもダメなんですね。 タオバオはスクレイピング対策を徹底してるみたいで、結局ログインさせてもらえませんでしたけど。(^^;) cx20さん、ベストアンサーをつけさせていただきたいと思うのですが、解答の方にも書いていただけませんでしょうか?
guest

回答2

0

ベストアンサー

試しては無いですが iframe になっているのが原因な気がします。

<参考情報>
■ Seleniumでページ内のiframeを操作できない
https://qiita.com/hondy12345/items/c7359c300c73afd11d76

スクレイピングについてはサービスによっては禁止されている場合がございますので留意ください。

投稿2021/10/14 03:00

cx20

総合スコア4633

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

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

hiro_a

2021/10/14 10:01

ご回答ありがとうございます。 ご指摘のとおり、iframeが原因でFindElementByXPathで指定してもメインのフレームを探していたようです。 対象サイトではスクレイピング対策がされており、VBA+Seleniumでは突破できないようなので、これ以上先には進めませんでしたが、今後に生かせたらと思います。 ありがとうございました。
guest

0

ご指摘いただいた通り、iframeが原因だったようです。
SwitchToFrameでターゲットを切り替えてやれば無事に動作しました。

iframeを使われてるときはターゲットフレームを変えてやらないと、単純にXPathを指定してもダメなんですね。
タオバオはスクレイピング対策を徹底してるみたいで、結局ログインさせてもらえませんでしたけど。(^^;)

cx20さん、ベストアンサーをつけさせていただきたいと思うのですが、解答の方にも書いていただけませんでしょうか?

投稿2021/10/13 19:50

hiro_a

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問