两个不同的元素有相同的xpath?

时间:2016-05-03 22:52:46

标签: java selenium xpath

我试图通过使用JUnit和Selenium来测试这个网站: https://www.oanda.com/currency/converter/

我试图从“我有货币”以及“我想要的货币”中选择单位。然后我发现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");
    }
}

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

1 个答案:

答案 0 :(得分:2)

我在该页面上计算了与该XPath匹配的4个元素。 (虽然在进一步检查时看起来你可以在每一对中使用,因为它们都是傻瓜。)你需要做的是找到你想要的特定范围的唯一父元素。例如,两个唯一匹配元素也可以通过以下方式更加独特地引用:

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

(我认为这是你想要的) 另一个可以通过以下方式更独特地引用:

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

我从“祖先”DIV获得了“报价货币选择器”和“基础货币选择器”位,这些位是从下拉列表中的“GBP”条目“更高”的XML树。