Java 使用相同xpath的两个不同元素?
我正在尝试使用JUnit和Selenium测试此网站: 我试图从“我拥有的货币”和“我想要的货币”中选择单位。然后我发现XPath是一样的。只有“我拥有的货币”代码才能成功运行。“我想要的货币”总是失败 Xpath是Java 使用相同xpath的两个不同元素?,java,selenium,xpath,Java,Selenium,Xpath,我正在尝试使用JUnit和Selenium测试此网站: 我试图从“我拥有的货币”和“我想要的货币”中选择单位。然后我发现XPath是一样的。只有“我拥有的货币”代码才能成功运行。“我想要的货币”总是失败 Xpath是driver.findElement(By.Xpath(“//span[text()='GBP']”) 有人能帮忙吗?谢谢 代码1: public class Currency_I_Have { WebDriver driver = new FirefoxDriver();
driver.findElement(By.Xpath(“//span[text()='GBP']”)代码>
有人能帮忙吗?谢谢
代码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");
}
}
我在该页面上计算了4个与XPath匹配的元素。(尽管在进一步检查时,您可能会选择每对中的任何一个,因为它们是重复的。)您需要做的是为您想要的特定跨度找到唯一的父元素。例如,两个唯一的匹配元素也可以通过以下方式进行更唯一的引用:
//div[@id='quote_currency_selector']//span[text()='GBP']
//div[@id='base_currency_selector']//span[text()='GBP']
(我想这就是你想要的)
另一个可以通过以下方式更唯一地引用:
//div[@id='quote_currency_selector']//span[text()='GBP']
//div[@id='base_currency_selector']//span[text()='GBP']
我从“祖先”div中获得了“报价货币选择器”和“基础货币选择器”位,这些div在下拉列表中的“GBP”条目中位于XML树的“更高”位置