2016-10-22 2 views
0

異なるメトリックシステムを持つウェブサイトを自動化しようとしています。 このアプリケーションは、アメリカのメトリックシステム&英国のメトリックシステムの両方をサポートしています。 例:アメリカのサーバーからアプリケーションを開く場合、別のサーバーから同じアプリケーションを開くと、フィート&インチのテキストボックス、&が表示されます。テキストボックスはセンチメートルで表示されます。足&インチとtextbox要素は、それがその後存在だ場合、それは、&が足&インチが存在しない他の場合、これらのテキストボックスに値を入力先に行き、存在していること最初かどうかをチェックするように、私は自分のコードを書いた要素を見つけることができません - セレンのwebdriverを使用して異なるロケールでウェブサイトを自動化

Centimetersのテキストボックスに値を入力します。

/* 
* 
* This block is for the values in US version 
* 
*/ 
@FindBy(xpath = ".//*[@id='profile_height_large_value']") 
WebElement CurrentHeightinFeet; 

@FindBy(xpath = ".//*[@id='profile_height_small_value']") 
WebElement CurrentHeightinInches; 

/* 
* This block is for the values in British version 
* 
*/ 

@FindBy(xpath = ".//*[@id='profile_height_display_value']") 
WebElement CurrentHeightinCM; 

私のコードはどちらのバージョンにあるかを確認するために以下の通りです。

public void userFitnessDetails() { 
    CurrentWeight.sendKeys("70"); 

    if (CurrentHeightinFeet.isDisplayed()) { 
     CurrentHeightinFeet.clear(); 
     CurrentHeightinFeet.sendKeys("5"); 
     CurrentHeightinInches.clear(); 
     CurrentHeightinInches.sendKeys("10"); 
    } 

    CurrentHeightinCM.clear(); 
    CurrentHeightinCM.sendKeys("170"); 
} 

私は上記のコードを実行すると、私はエラーを取得する - に失敗しました:申し込み org.openqa.selenium.NoSuchElementException:要素を見つけることができません:

{"method":"xpath","selector":".//*[@id='profile_height_large_value']"} 

誰かがこれを修正するために私を導いでしたが?

おかげ

答えて

1

仮定 - あなたは英国のサーバー上で作業し、アメリカの足の長さの入力の問題に実行されています。ページは完全にロードされ、要素は完全に利用可能であるため、待機問題は存在しません。

isDisplayed()メソッドで問題が発生します。これは、スタイル属性の表示設定のために、ページに存在する要素が表示されていないか、またはその逆であるかどうかを判断するために使用されます。ここでは、関連するhtml要素が存在するかどうかに応じてサーバーの場所に応じて説明しました。要素が利用できない場合は、例外が表示されます。

isDiplayed()の条件チェックの代わりに安全なdriver.findElements()を使用すると、リストが返され、サイズを確認して空き状況を確認できます。

+0

私はあなたの提案に従ってコードを変更しましたが、私は自分の状態チェックに問題があります。 – AdiBoy

+0

@FindBy(xpath = ".//*[id='profile_height_display_value ']")) \t WebElement CurrentHeightinCM; \t @FindAll(@FindBy(id = "profile_goal_weight_display_value")) \t WebElement GoalWeight;また、私の状態チェックで私はif(CurrentHeightinFeet.size()> 0 && CurrentHeightinInches.size()> 0){ \t \t \t CurrentHeightinFeet.clear();を使用しています。 \t \t \t CurrentHeightinFeet.sendKeys( "5"); \t \t \t CurrentHeightinInches.clear(); \t \t \t CurrentHeightinInches.sendKeys( "10"); \t \t} "リスト" – AdiBoy

+1

の場合、メソッドsendKeys(String)は定義されていません。WebElementsを含むリストでsendKeysを呼び出すことはできません。したがって、リストのサイズが0より大きい場合、条件が満たされます。探している要素をリストから抽出する必要があります。 WebElementを取得するには、リストのget(0)メソッドを使用します。次に、sendKeysメソッドを使用します。 – Grasshopper

関連する問題