質問編集履歴

4 誤字修正

gogoteanonsuger

gogoteanonsuger score 2

2017/02/22 11:46  投稿

frame内部のframeの要素をselenium webdriverで取得したい
はじめまして。
どうしてもわからないことがあったので、質問させていただきます
###前提・実現したいこと
selenium webdriverを使って以下のようなHTMLの動作テストを進めています。
トップページのソースが以下となります。
```main.html
<html>
<head>
 <title>トップページ</title>
</head>
 <frameset framespacing=0 frameborder=0 rows="100px, *">
   <frame src="Hoge.jsp" name="header" id="header" scrolling="no" noresize marginheight="0">
  <!--- ↓取得したいフレーム①↓ --->
   <frame src="FugaServlet?logid=header" name="main" id="main" scrolling="auto" marginheight="0" marginwidth="4">
 </frameset>
</html>
```
このトップページの`main`フレームを展開したものが以下です。
```html
<HTML>
<HEAD></HEAD>
<FRAMESET cols="260px,*" frameborder="no" border="0" framespacing="0" onLoad="Init();activeDesktopImage();">
 <!--- ↓取得したいフレーム②↓ --->
 <FRAME name="leftFrame" noresize src="left.jsp">
 <FRAME name="rightFrame" src="right.jsp">
</FRAMESET>
</HTML>
```
更にこの`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を使ってスクレイピング](http://qiita.com/tomerun/items/9cb81d7a98150ff22f53)
webdriverからだと、フレームの移動は1度しかできないようで、frameの中のframe、すなわち`leftFlame`フレームに遷移することができません。(noSuchElementErrorが返却されます)
webdriverからだと、フレームの移動は1度しかできないようで、frameの中のframe、すなわち`leftFrame`フレームに遷移することができません。(noSuchElementErrorが返却されます)
``` ruby
#coding: utf-8
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.navigate.to 'https://hogehoge.com'
driver.switch_to.frame('main') #ここでみることはできる
driver.switch_to.frame('leftFlame') #できない
driver.switch_to.frame('leftFrame') #できない
```
**__実行結果__**
```
Unable to locate element: #leftFlame (Selenium::WebDriver::Error::NoSuchElementError)
Unable to locate element: #leftFrame (Selenium::WebDriver::Error::NoSuchElementError)
```
以下のようにXpathを使って`find_element`をしてみても取得はできませんでした
``` ruby
driver.switch_to.frame('main')
driver.find_element(:xpath, '/html/frameset/frame[1]')
```
ネットで調べてみても、frameの取得に悩んでいる方はたくさんいらっしゃいましたが、有力な情報に辿り着くことはできませんでした・・・
上記のような要素の取得方法についてご存じの方がいらっしゃいましたら、
ぜひともご教授いただけませんでしょうか。
よろしくお願い致します。
  • Ruby on Rails

    9099 questions

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

  • Firefox

    248 questions

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

  • selenium

    737 questions

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

3 誤字修正

gogoteanonsuger

gogoteanonsuger score 2

2017/02/22 11:45  投稿

frame内部のframeの要素をselenium webdriverで取得したい
はじめまして。
どうしてもわからないことがあったので、質問させていただきます
###前提・実現したいこと
selenium webdriverを使って以下のようなHTMLの動作テストを進めています。
トップページのソースが以下となります。
```main.html
<html>
<head>
 <title>トップページ</title>
</head>
 <frameset framespacing=0 frameborder=0 rows="100px, *">
   <frame src="Hoge.jsp" name="header" id="header" scrolling="no" noresize marginheight="0">
  <!--- ↓取得したいフレーム①↓ --->
   <frame src="FugaServlet?logid=header" name="main" id="main" scrolling="auto" marginheight="0" marginwidth="4">
 </frameset>
</html>
```
このトップページの`main`フレームを展開したものが以下です。
```html
<HTML>
<HEAD></HEAD>
<FRAMESET cols="260px,*" frameborder="no" border="0" framespacing="0" onLoad="Init();activeDesktopImage();">
 <!--- ↓取得したいフレーム②↓ --->
 <FRAME name="leftFrame" noresize src="left.jsp">
 <FRAME name="rightFrame" src="right.jsp">
</FRAMESET>
</HTML>
```
更にこの`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>
```
`leftFlame`フレーム内部にある、`fuga`を取得するのが目的です。
`leftFrame`フレーム内部にある、`fuga`を取得するのが目的です。
###発生している問題・エラーメッセージ
今回、以下のサイトなどを参考にしながら、selenium webdriverを使ってrubyでコードを書いているのですが、
[RubyでSeleniumを使ってスクレイピング](http://qiita.com/tomerun/items/9cb81d7a98150ff22f53)
webdriverからだと、フレームの移動は1度しかできないようで、frameの中のframe、すなわち`leftFlame`フレームに遷移することができません。(noSuchElementErrorが返却されます)
``` ruby
#coding: utf-8
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.navigate.to 'https://hogehoge.com'
driver.switch_to.frame('main') #ここでみることはできる
driver.switch_to.frame('leftFlame') #できない
```
**__実行結果__**
```
Unable to locate element: #leftFlame (Selenium::WebDriver::Error::NoSuchElementError)
```
以下のようにXpathを使って`find_element`をしてみても取得はできませんでした
``` ruby
driver.switch_to.frame('main')
driver.find_element(:xpath, '/html/frameset/frame[1]')
```
ネットで調べてみても、frameの取得に悩んでいる方はたくさんいらっしゃいましたが、有力な情報に辿り着くことはできませんでした・・・
上記のような要素の取得方法についてご存じの方がいらっしゃいましたら、
ぜひともご教授いただけませんでしょうか。
よろしくお願い致します。
  • Ruby on Rails

    9099 questions

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

  • Firefox

    248 questions

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

  • selenium

    737 questions

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

2 誤字の修正

gogoteanonsuger

gogoteanonsuger score 2

2017/02/22 11:37  投稿

frame内部のframeの要素をseleniumで取得したい
frame内部のframeの要素をselenium webdriverで取得したい
はじめまして。
どうしてもわからないことがあったので、質問させていただきます
###前提・実現したいこと
seleniumを使って以下のようなHTMLの動作テストを進めています。
selenium webdriverを使って以下のようなHTMLの動作テストを進めています。
トップページのソースが以下となります。
```main.html
<html>
<head>
 <title>トップページ</title>
</head>
 <frameset framespacing=0 frameborder=0 rows="100px, *">
   <frame src="Hoge.jsp" name="header" id="header" scrolling="no" noresize marginheight="0">
  <!--- ↓取得したいフレーム①↓ --->
   <frame src="FugaServlet?logid=header" name="main" id="main" scrolling="auto" marginheight="0" marginwidth="4">
 </frameset>
</html>
```
このトップページの`main`フレームを展開したものが以下です。
```html
<HTML>
<HEAD></HEAD>
<FRAMESET cols="260px,*" frameborder="no" border="0" framespacing="0" onLoad="Init();activeDesktopImage();">
 <!--- ↓取得したいフレーム②↓ --->
 <FRAME name="leftFrame" noresize src="left.jsp">
 <FRAME name="rightFrame" src="right.jsp">
</FRAMESET>
</HTML>
```
更にこの`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>
```
`leftFlame`フレーム内部にある、`fuga`を取得するのが目的です。
###発生している問題・エラーメッセージ
今回、以下のサイトなどを参考にしながら、selenium webdriverを使ってrubyでコードを書いているのですが、
[RubyでSeleniumを使ってスクレイピング](http://qiita.com/tomerun/items/9cb81d7a98150ff22f53)
webdriverからだと、フレームの移動は1度しかできないようで、frameの中のframe、すなわち`leftFlame`フレームに遷移することができません。(noSuchElementErrorが返却されます)
``` ruby
#coding: utf-8
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.navigate.to 'https://hogehoge.com'
driver.switch_to.frame('main') #ここでみることはできる
driver.switch_to.frame('leftFlame') #できない
```
**__実行結果__**
```
Unable to locate element: #leftFlame (Selenium::WebDriver::Error::NoSuchElementError)
```
以下のようにXpathを使って`find_element`をしてみても取得はできませんでした
``` ruby
driver.switch_to.frame('main')
driver.find_element(:xpath, '/html/frameset/frame[1]')
```
ネットで調べてみても、frameの取得に悩んでいる方はたくさんいらっしゃいましたが、有力な情報に辿り着くことはできませんでした・・・
上記のような要素の取得方法についてご存じの方がいらっしゃいましたら、
ぜひともご教授いただけませんでしょうか。
よろしくお願い致します。
  • Ruby on Rails

    9099 questions

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

  • Firefox

    248 questions

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

  • selenium

    737 questions

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

1 文章の内容を修正

gogoteanonsuger

gogoteanonsuger score 2

2017/02/22 11:03  投稿

frame内部のframeの要素をseleniumで取得したい
はじめまして。
どうしてもわからないことがあったので、質問させていただきます
###前提・実現したいこと
seleniumを使って以下のようなHTMLの動作テストを進めています。
トップページのソースが以下となります。
```main.html
<html>
<head>
 <title>トップページ</title>
</head>
 <frameset framespacing=0 frameborder=0 rows="100px, *">
   <frame src="Hoge.jsp" name="header" id="header" scrolling="no" noresize marginheight="0">
  <!--- ↓取得したいフレーム①↓ --->
   <frame src="FugaServlet?logid=header" name="main" id="main" scrolling="auto" marginheight="0" marginwidth="4">
 </frameset>
</html>
```
このトップページの`main`フレームを展開したものが以下です。
```html
<HTML>
<HEAD></HEAD>
<FRAMESET cols="260px,*" frameborder="no" border="0" framespacing="0" onLoad="Init();activeDesktopImage();">
 <!--- ↓取得したいフレーム②↓ --->
 <FRAME name="leftFrame" noresize src="left.jsp">
 <FRAME name="rightFrame" src="right.jsp">
</FRAMESET>
</HTML>
```
更にこの`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>
```
`leftFlame`フレーム内部にある、`fuga`を取得するのが目的です。
###発生している問題・エラーメッセージ
今回、以下のサイトなどを参考にしながら、selenium webdriverを使ってrubyでコードを書いているのですが、
[RubyでSeleniumを使ってスクレイピング](http://qiita.com/tomerun/items/9cb81d7a98150ff22f53)
webdriverからだと、フレームの移動は1度しかできないようで、frameの中のframeに遷移することができません。(noSuchElementErrorが返却されます)
webdriverからだと、フレームの移動は1度しかできないようで、frameの中のframe、すなわち`leftFlame`フレームに遷移することができません。(noSuchElementErrorが返却されます)
``` ruby
#coding: utf-8
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.navigate.to 'https://hogehoge.com'
driver.switch_to.frame('main')
driver.switch_to.frame('main') #ここでみることはできる
driver.switch_to.frame('leftFlame') #できない
```
**__実行結果__**
```
Unable to locate element: #leftFlame (Selenium::WebDriver::Error::NoSuchElementError)
```
以下のようにXpathを使って`find_element`をしてみても取得はできませんでした
``` ruby
driver.switch_to.frame('main')
driver.find_element(:xpath, '/html/frameset/frame[1]')
```
ネットで調べてみても、frameの取得に悩んでいる方はたくさんいらっしゃいましたが、有力な情報に辿り着くことはできませんでした・・・
上記のような要素の取得方法についてご存じの方がいらっしゃいましたら、
ぜひともご教授いただけませんでしょうか。
よろしくお願い致します。
  • Ruby on Rails

    9099 questions

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

  • Firefox

    248 questions

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

  • selenium

    737 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る