お世話になります。
昨日質問投稿したのですが、2重投稿削除の関係で、すべて削除されたので
再度質問します。(一部修正)
Vbaから、selenium経由で、webページの情報を取得しています。
対象のタグはxpathで取得しますが、階層が深くなるとコードが読みにくい、
あるいは、ループの変数で都合がいいので
一旦オブジェクトにsetしたいのですがうまく行きません
例えば
objSL.get "https:/hogehoge.com/index.html"
objSL.FindElementsByXPath("//[contains(text(),""TODAY"")]").Count
===>3 というページがあり
objSL.FindElementsByXPath("//[contains(text(),""TODAY"")]")(1).Attribute("outerHTML")
===> <td>Fine</td>
objSL.FindElementsByXPath("//*[contains(text(),""TODAY"")]")(2).Attribute("outerHTML")
===>、<td>Rain</td>
という状態です。
(1)xpathの内部に番号を入れる方法を知りたいです
objSL.FindElementsByXPath("//[contains(text(),""TODAY"")][1]").Attribute("outerHTML")
'これはエラーでした
(2)
dim objOne as object
set objOne = objSL.FindElementsByXPath("//[contains(text(),""TODAY"")]")
この時に
objSL.FindElementsByXPath("//*[contains(text(),""TODAY"")][1]/following-sibling::td").count
==> 1 => 元のojbSLから直接指定したタグをカウントすると 1になりますが
objOne(1).findelementsbyxpath("/following-sibling::td").count
==> 0 => 一旦オブジェクトに代入するとカウントがが 0になりおかしい。
ちなみに
objOne(1).findelementsbyxpath("following-sibling::td").count ==> 0
objOne(1).findelementsbyxpath("//following-sibling::td").count ==> 70
実際には、xpathがもっと深くなるので、2段、3段と都度xpathの途中までオブジェクトに代入
したいのと、
そのオブジェクト単位で
for i = 1 to objOne.count のようなループも実装したいと考えています
おそらく表記方法か、set 変数の型が違うのかと思いますが
何かヒントだけでもあれば幸いです。
あなたの回答
tips
プレビュー