2016-05-03 13 views
0

Ich versuche, diese Website zu testen, indem JUnit und Selen mit: https://www.oanda.com/currency/converter/Zwei verschiedene Elemente mit demselben xpath?

Ich versuchte Einheit zur Auswahl „Currency I Have“ sowie "Currency I Want". Dann habe ich herausgefunden, dass die XPaths gleich sind. Nur die "Currency I Have" -Codes können erfolgreich ausgeführt werden. "Währung, die ich will" scheitert immer.

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

Könnte jemand auf diesem helfen? Vielen Dank.

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"); 
    } 
} 

Antwort

2

I zählen 4 Elemente auf der Seite, dass passende XPath. (Obwohl bei näherer Betrachtung sieht es so aus, als könnten Sie mit jedem der beiden Paare gehen, da es sich um Betrüger handelt.) Was Sie tun müssen, ist, eindeutige Elternelemente für die von Ihnen gewünschte Zeitspanne zu finden. Zum Beispiel könnten die beiden einzigartigen Anpasselemente auch eindeutig über referenziert werden:

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

(ich denke, das derjenige ist, Sie wollen) Der andere referenzierte mehr eindeutig über sein könnte:

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

Ich habe die "Quote Currency Selector" und "Base Currency Selector" -Bits von "Vorfahren" DIVs, die "höher" den XML-Baum von den "GBP" -Einträge in den Dropdowns waren.

+0

Das funktioniert gut. Ich danke dir sehr. – robertredrain

Verwandte Themen