我试图通过使用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");
}
}
答案 0 :(得分:2)
我在该页面上计算了与该XPath匹配的4个元素。 (虽然在进一步检查时看起来你可以在每一对中使用,因为它们都是傻瓜。)你需要做的是找到你想要的特定范围的唯一父元素。例如,两个唯一匹配元素也可以通过以下方式更加独特地引用:
//div[@id='quote_currency_selector']//span[text()='GBP']
(我认为这是你想要的) 另一个可以通过以下方式更独特地引用:
//div[@id='base_currency_selector']//span[text()='GBP']
我从“祖先”DIV获得了“报价货币选择器”和“基础货币选择器”位,这些位是从下拉列表中的“GBP”条目“更高”的XML树。