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

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

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

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

selenium

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

Q&A

0回答

4090閲覧

frame内部のframeの要素をselenium webdriverで取得したい

gogoteanonsuger

総合スコア4

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

selenium

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

0グッド

0クリップ

投稿2017/02/22 01:22

編集2022/01/12 10:55

はじめまして。
どうしてもわからないことがあったので、質問させていただきます

###前提・実現したいこと
selenium webdriverを使って以下のようなHTMLの動作テストを進めています。
トップページのソースが以下となります。

main.html

1 2<html> 3<head> 4 <title>トップページ</title> 5</head> 6 7 <frameset framespacing=0 frameborder=0 rows="100px, *"> 8 <frame src="Hoge.jsp" name="header" id="header" scrolling="no" noresize marginheight="0"> 9 <!--- ↓取得したいフレーム①↓ ---> 10 <frame src="FugaServlet?logid=header" name="main" id="main" scrolling="auto" marginheight="0" marginwidth="4"> 11 </frameset> 12 13</html> 14

このトップページのmainフレームを展開したものが以下です。

html

1 2<HTML> 3<HEAD></HEAD> 4<FRAMESET cols="260px,*" frameborder="no" border="0" framespacing="0" onLoad="Init();activeDesktopImage();"> 5 6 <!--- ↓取得したいフレーム②↓ ---> 7 <FRAME name="leftFrame" noresize src="left.jsp"> 8 9 <FRAME name="rightFrame" src="right.jsp"> 10 11</FRAMESET> 12</HTML> 13

更にこのmainフレーム中にあるleftFrameフレームを展開し、

<HTML> <HEAD></HEAD> <BODY> <TABLE cellspacing=0 cellpadding=0> <TBODY> <TR> <!--- ↓今回取得したい要素↓ ---> <TD class="tabSpace">fuga</TD> <TD class="tabSpace">hoge</TD> </TR> </TBODY> </TABLE> </BODY> </HTML>

leftFrameフレーム内部にある、fugaを取得するのが目的です。

###発生している問題・エラーメッセージ

今回、以下のサイトなどを参考にしながら、selenium webdriverを使ってrubyでコードを書いているのですが、
RubyでSeleniumを使ってスクレイピング
webdriverからだと、フレームの移動は1度しかできないようで、frameの中のframe、すなわちleftFrameフレームに遷移することができません。(noSuchElementErrorが返却されます)

ruby

1#coding: utf-8 2 3require 'rubygems' 4require 'selenium-webdriver' 5 6driver = Selenium::WebDriver.for :firefox 7 8driver.navigate.to 'https://hogehoge.com' 9 10driver.switch_to.frame('main') #ここでみることはできる 11 12driver.switch_to.frame('leftFrame') #できない 13

実行結果

Unable to locate element: #leftFrame (Selenium::WebDriver::Error::NoSuchElementError)

以下のようにXpathを使ってfind_elementをしてみても取得はできませんでした

ruby

1driver.switch_to.frame('main') 2 3driver.find_element(:xpath, '/html/frameset/frame[1]') 4

ネットで調べてみても、frameの取得に悩んでいる方はたくさんいらっしゃいましたが、有力な情報に辿り着くことはできませんでした・・・

上記のような要素の取得方法についてご存じの方がいらっしゃいましたら、
ぜひともご教授いただけませんでしょうか。
よろしくお願い致します。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問