2011-12-21 1 views
3

現在、サンプルサイトを解析しようとしています。 このサイトでは、CSSの効果を適用するために、「表示:なし」 に設定されています。実際には、 という選択コンポーネントが表示されています。要素は現在表示されていないため、相互作用しない可能性があります

どのように値をそのhtmlに設定できますかコンポーネントを選択しますか? org.openqa.selenium.remote:によって

を引き起こした:ここに例外がある

WebElement element = driver.findElement(By.name("paper")); 
Select paperList = new Select(element); 
paperList .selectByValue("73"); // it gives error 
driver.findElement(By.className("btn1")).click(); 

私は、Java +セレンwebdriverを2.0

を使用しています:

は、ここに私のコードです。 ErrorHandler $ UnknownServerException:要素が現在表示されていないため、 はビルド情報と対話できません:バージョン: '2.14.0'、改訂: 'unknown'、時刻: '2011-11-29 13:13:16'システム情報:os.name: 'Windows XP'、os.arch: 'x86'、os.version: '5.1'、java。バージョン: '1.7.0-ea'

ありがとうございます。

答えて

7

私が考えることができるこの2つの異なる方法があります。まず、同じ要素に2つの競合するスタイルがないように、ページのCSSをクリーンアップします。 2番目の私の推測では、あなたのセレンテストがオブジェクトをつかんだ後におそらく発砲している選択メニューを有効にし、それが見えないと言います。テスト目的のために、コードを取得する前にthread.sleepを削除してみてください。それが問題を解決すれば、document.readyStateを探すjavascriptを作成し、それが "complete"だったら、私はSeleniumを使ってページを解析するでしょう。

------ ------ EDIT

さてあなたはJavascriptExecutorクラスを使用して、webdriverをにキャストする必要がセレンでDOMを変更します。その後、ページ上のセレンアプリケーションからjavascriptを実行できます。つまり、DOMを操作できます。ここで

は例です:

WebDriver driver; // Assigned elsewhere 
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("document.getElementById('//elementID').removeAttr('display');"); 

http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/JavascriptExecutor.html

+0

素晴らしいアイデア...どのように私はセレンのwebdriver経由でCSSをクリーンアップできますか?任意のサンプルコード? – Lurtz

+0

動作しません。 webdriver経由でURLを投稿することはできますか? Like driver.post( "http://www.test.com/sample.asp?param1=&country=222"); – Lurtz

1

は正確にすべての// divの属性を持つUIエレメントを検索し、すべての実行中の要素を見つけるために私を助けました。 クラス名、テキスト、スタイルなどの要素を見つけるためのすべての属性を含めてください。

0

セレンのスタンドアロンサーバーを利用できる場合は、2.35.0以上に更新してください。 jarファイルを更新する必要があります。私は同じ問題を抱えていましたが、2.33.0のjarファイルを使用していました。2.35.0の新しいseleniumスタンドアロンサーバーjarファイルを更新/ダウンロードするとすぐに問題は解決しました。

関連する問題