2016-05-03 18 views
0

私はJUnitのとSeleniumを使用して、このウェブサイトをテストしようとしています: https://www.oanda.com/currency/converter/同じxpathの2つの異なる要素はありますか?

私はだけでなく、「通貨私が欲しい」「私が持っている通貨」から単位を選択しようとしました。それから、私はxpathsが同じであることを知りました。 「通貨」コードのみが正常に実行されます。 「私が欲しい通貨」は常に失敗します。

XPathはdriver.findElement(By.xpath("//span[text() = 'GBP']")).click();

では、誰かがこれを助けてもらえますか?ありがとう。

CODE1:

public class Currency_I_Have { 
    WebDriver driver = new FirefoxDriver(); 

    @Before 
    public void setUp() throws Exception { 
     driver.manage().window().maximize(); 
     driver.get("https://www.oanda.com/currency/converter/"); 
    } 

    @Test 
    public void test() { 
     driver.findElement(By.id("quote_currency_input")).click(); 

     driver.findElement(By.xpath("//span[text() = 'GBP']")).click(); 
     WebElement Amount = driver.findElement(By.id("quote_amount_input")); 
     Amount.clear(); 
     Amount.sendKeys("100"); 
    } 
} 

CODE2:

public class Currency_I_Want { 
    WebDriver driver = new FirefoxDriver(); 

    @Before 
    public void setUp() throws Exception { 
     driver.manage().window().maximize(); 
     driver.get("https://www.oanda.com/currency/converter/"); 
    } 

    @Test 
    public void test() { 
     driver.findElement(By.id("base_currency_input")).click(); 

     driver.findElement(By.xpath("//span[text() = 'GBP']")).click(); 
     WebElement Amount = driver.findElement(By.id("base_amount_input")); 
     Amount.clear(); 
     Amount.sendKeys("200"); 
    } 
} 

答えて

2

私は、そのページのマッチングのXPathの4つの要素を数えます。 (それ以上の検査では、それぞれのペアのいずれかに行くことができるように見えますが、それらは二重であるためです)。必要なのは、必要な特定のスパンの一意の親要素を見つけることです。例えば、2つの固有のマッチング要素も経由して、より一意に参照することができます。

//div[@id='quote_currency_selector']//span[text()='GBP'] 

(私はこれがしたい一つだと思い) 他方は経由より一意に参照することができます。

//div[@id='base_currency_selector']//span[text()='GBP'] 

ドロップダウンの「GBP」エントリからXMLツリーを「上位」にした「祖先」DIVから「引用通貨セレクタ」および「基本通貨セレクタ」ビットを取得しました。

+0

これは問題なく動作します。どうもありがとうございます。 – robertredrain

関連する問題