java
  • selenium
  • xpath
  • 2016-05-03 123 views 0 likes 
    0

    我将尝试使用JUnit和Selenium测试此网站: https://www.oanda.com/currency/converter/两个不同的元素具有相同的xpath?

    我试图从“货币无我有”,以及“货币我想要的”选择单位。然后我发现xpaths是一样的。只有“货币我有”代码可以成功运行。 “我想要的货币”总是失败。

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

    可能有人在帮助呢?谢谢。

    代码1:

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

    代码2:

    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个元素。 (虽然进一步检查看起来你可以在每一对中使用,因为它们是愚蠢的。)你需要做的是找到你想要的特定跨度的唯一父元素。例如,两个独特匹配的元素也可以更独特通过引用:

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

    (我认为这是一个你想要的) 另一种可能更独特通过引用:

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

    我从下拉菜单中的“GBP”条目中“高于”XML树的“祖先”DIV获得了“引用货币选择器”和“基本货币选择器”位。

    +0

    工作正常。非常感谢。 – robertredrain

    相关问题