2017-02-15 18 views
0

これはセレンとクリックに関するもう1つの質問です。私は約2日間苦労しており、それを働かせることはできません - 私はインターネットで回答を試みましたが、今私は協調した努力が必要です。前もって感謝します!!セレン、Java、スクリーンショット、クリックボタンに関する問題

私は次のサイトhttp://144.76.109.38/peTESTで作業しています。これは、ステップをリトレースする場合に役立ちます。

ログインフォームに必要事項を記入し、[ログイン]をクリックして回答ページを表示します。ここで

は私のコードです:

import java.io.File; 
import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.Writer; 
import java.io.IOException; 
import org.apache.commons.io.FileUtils; 
import org.openqa.selenium.By; 
import org.openqa.selenium.Keys; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.OutputType; 
import org.openqa.selenium.TakesScreenshot; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.ExpectedCondition; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.openqa.selenium.support.ui.Select; 
public class toJava { 
     public static void main(String[] args) { 
       System.setProperty("webdriver.gecko.driver","/home/tallen/RTI/lib/geckodriver/geckodriver"); 
       WebDriver driver = new FirefoxDriver(); 
       driver.get("http:144.76.109.38/peTEST"); 
       File SF2 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
       try{ 
        FileUtils.copyFile(SF2, new File("./out-004.png")); 
       }catch(IOException ioe){ 
         System.out.println("There was an IO error"); 
       } 
       driver.findElement(By.id("user_login_name")).click(); 
       WebElement WE4 = driver.findElement(By.id("user_login_name")); 
       WE4.sendKeys("Superuser"); 
       driver.findElement(By.id("user_password")).click(); 
       WebElement WE6 = driver.findElement(By.id("user_password")); 
       WE6.sendKeys("Jkerouac1!"); 
       WebElement WE7 = driver.findElement(By.xpath(".//*[@type='button'][@onclick='login()'][@value='Login']")); 
       WE7.sendKeys(Keys.ENTER); 
       File SF8 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
       try{ 
         FileUtils.copyFile(SF8, new File("./out-005.png")); 
       }catch(IOException ioe){ 
         System.out.println("There was an IO error"); 
       } 
       driver.quit(); 
     } 
} 

だから基本的に私は、ページを開く、ユーザー名とパスワードを入力するスクリーンショットを取って、ログインをクリックして、別のスクリーンショットを取っています。

これに対するコンパイルと実行はクリーンです。例外で問題はありません。私も2つのスクリーンショットを取得します。最初のスクリーンショットはログインページを示しています。データは入力されていません。 2番目のスクリーンショットはログインページが表示され、クリックしたいボタンは表示されますが、正常にログインすると表示される「ようこそページ」は表示されません。スクリーンショットにはボタンが表示されています。 。あなたがSeleniumで最初に試してみたい場合に備えて、私はスクリプトにログイン情報を与えています。

なぜログインボタンがクリックされていないのですか?私は、クリックしたり、実行したりして、役に立たなかった。私は暗黙の待ちを入れようとしました - まだ何もありません。

私は先進的な使用法の相互作用を試みましたが、まだ何もしていません。

私はSeleniumとJavaにはかなり新しく、それは私が見落としているだけの愚かであることを望んでいます。しかし、Webを見て、解決策は役に立たないだけです。私は私のセレンライブラリ

のDebian-70-Wheezyに-64-LAMPに取り組んでいます

は、クライアントを組み合わせ-3.0.1-nodeps.jar

マイGeckodriverは、v0.11.1-LINUX64

あるからです

ありがとうございました!

+0

ログインボタンをクリックする声明が 'WE7.sendKeys(Keys.ENTER)'であると仮定すると、なぜボタンの上に 'click()'を呼び出すのではなく、 user_login_name'と 'user_password'フィールドはありますか?私はそれが間違っているとは必ずしも言いませんが(私は知らないし、チェックしませんでした)、代わりに 'click()'します。また、なぜ 'user_login_name'と' user_password'フィールドで 'click()'を呼びますか?ちょうどそれらに 'sendKeys'を送ります。 – SantiBailors

+0

こんにちはSantiBailors - これは単なる進化です。私はclick()を試したが、これはうまくいかなかった。私はこのヒントがネット上の他の場所に掲載されているのを見たので、試してみました。それは動作します。つまり、問題は発生しませんが、スクリーンショットはまだ間違っています。つまり、クリックに失敗しました。ありがとう!!! –

答えて

1

こんにちは、
問題が発生する可能性がありますが、とにかくログインボタンを使用するとわかりません

WE7.click();
私は要素で何をしようとしているのか分かりやすいと思っています。

私はしばらくGeckoDriverと仕事をしていて、その地域の経験豊富な人と話をしていましたが、Geckoにはまだ解決されていない多くの問題があると言われました。
GeckoDriverは非常に頻繁に失敗してしまい、代わりにFirefoxDriverを使用するように言われたので、私はいつもGeckoDriverを使用しないことを勧めました。
この方法で試してみると、これは重要です。古いバージョンのFirefoxをFirefoxDriverと互換性のあるバージョン46としてそのまま使用する必要があります(そのバージョンは私のために働きました。 this)、GeckoDriverの使用は避けてください。 また、私はhereのようにバージョン47がFirefoxDriverで動作するようです。
これらの旧バージョンのFirefoxをインストールするときは、設定に行き、自動アップデートとバックグラウンドアップデートを無効にすることを忘れないでください。そうしないと、すぐに最新のGeckoDriverを必要とするバージョン。あなたは次のようにいくつかの検証を試みることができるほか

if(WE7.isDisplayed() && WE7.isEnabled()){ 
    WE7.click(); 
} 
検証のこの種のは、ページが完全にあなたが取るしようとしている瞬間にロードされていない場合には役立つだろう

Web要素に対するアクション。要素が準備ができていない場合は、エラーなしでクリックしますが、機能しません。

これはあなたにとってもうまくいきますように!

+1

固定、ありがとう! – ferpel

+0

ありがとう - 私はこれを試してみるつもりです。私はそれを試してみるのに時間が必要です - できるだけ早くあなたにすべての結果を返すでしょう。 –

+0

よろしくお願いします!ゆっくりしてください! – ferpel

関連する問題