代码如下
package selenium_Test; import org.openqa.selenium.*; import org.openqa.selenium.firefox.*; import org.openqa.selenium.WebDriver.*; public class Collection { public static void main (String args[]) throws Exception { System.setProperty("webdriver.firefox.bin", "E:\\software\\firefox\\firefox.exe"); WebDriver driver=new FirefoxDriver(); driver.navigate().to("http://www.jd.com"); System.out.println("检查是否进入京东首页:"+driver.getCurrentUrl().equals("http://www.jd.com/")); driver.findElement(By.id("key")).sendKeys("2269"); driver.findElement(By.className("button")).click(); System.out.println("检查搜索页面是否跳转正确:"+driver.getCurrentUrl().equals("http://search.jd.com/Search?keyword=2269&enc=utf-8")); driver.findElement(By.partialLinkText("AOC I2269VW 21.5英寸LED背光超窄边框IPS广视角液晶显示器(银色)")).click(); System.out.println("检查是否进入之前选择的商品页面:"+driver.getCurrentUrl().equals("http://item.jd.com/845638.html")); // System.out.println("检查商品价格是否准确:"+driver.findElement(By.id("jd-price]")).getText().contains("¥869.00")); driver.quit(); } }
执行结果:
检查是否进入京东首页:true 检查搜索页面是否跳转正确:true 检查是否进入之前选择的商品页面:false
问题描述请看博客摘要
解决方案一(他人给予,科学的方法):
package com.TestNG.Selenium; import java.util.Iterator; import java.util.Set; import org.openqa.selenium.*; import org.openqa.selenium.firefox.*; import org.openqa.selenium.WebDriver.*; public class a23 { public static void main (String args[]) throws Exception { System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); WebDriver driver=new FirefoxDriver(); driver.navigate().to("http://www.jd.com "); System.out.println("检查是否进入京东首页:"+driver.getCurrentUrl().equals("http://www.jd.com/")); driver.findElement(By.id("key")).sendKeys("2269"); driver.findElement(By.className("button")).click(); System.out.println("检查搜索页面是否跳转正确:"+driver.getCurrentUrl().equals("http://search.jd.com/Search?keyword=2269&enc=utf-8")); driver.findElement(By.partialLinkText("AOC I2269VW 21.5英寸LED背光超窄边框IPS广视角液晶显示器(银色)")).click(); Thread.sleep(2000); driver=switchWindow(driver,"【AOCI2269VW】AOC I2269VW 21.5英寸LED背光超窄边框IPS广视角液晶显示器(银色)【行情 报价 价格 评测】-京东"); Thread.sleep(5000); String url1=driver.getCurrentUrl(); System.out.println(url1); System.out.println("检查是否进入之前选择的商品页面:"+driver.getCurrentUrl().equals("http://item.jd.com/845638.html")); // System.out.println("检查商品价格是否准确:"+driver.findElement(By.id("jd-price]")).getText().contains("¥869.00")); driver.quit(); } } } //使用这个。 函数是:switch window private static WebDriver switchWindow(WebDriver dr,String winTitle){ String currentHandle =dr.getWindowHandle();//获取当前浏览器窗口标识 Set<String> handles=dr.getWindowHandles(); for(String handle:handles){ //获取所有浏览器窗口标识 if(handle.equals(currentHandle)) continue; else{ dr.switchTo().window(handle); if(dr.getTitle().contains(winTitle)){ break; }else continue; } } return dr; } }
执行结果如下:
检查是否进入京东首页:true 检查搜索页面是否跳转正确:true http://item.jd.com/845638.html 检查是否进入之前选择的商品页面:true
解决方案二(自己瞎弄的,居然还成功了):
package com.TestNG.Selenium; import org.openqa.selenium.*; import org.openqa.selenium.firefox.*; import org.openqa.selenium.WebDriver.*; public class Collection { public static void main (String args[]) throws Exception { System.setProperty("webdriver.firefox.bin", "D:\\软件\\浏览器\\firefox\\firefox.exe"); WebDriver driver=new FirefoxDriver(); driver.navigate().to("http://www.jd.com"); System.out.println("检查是否进入京东首页:"+driver.getCurrentUrl().equals("http://www.jd.com/")); driver.findElement(By.id("key")).sendKeys("2269"); driver.findElement(By.className("button")).click(); System.out.println("检查搜索页面是否跳转正确:"+"http://search.jd.com/Search?keyword=2269&enc=utf-8".equals(driver.getCurrentUrl())); //重点在这里,跑一边,句柄无法捕捉,但是跑2遍就会被捕捉(看来系统也是关爱努力的人的,玩笑。。) driver.findElement(By.partialLinkText("AOC I2269VW 21.5英寸LED背光超窄边框IPS广视角液晶显示器(银色)")).click(); driver.findElement(By.partialLinkText("AOC I2269VW 21.5英寸LED背光超窄边框IPS广视角液晶显示器(银色)")).click(); String[] handle=new String[driver.getWindowHandles().size()]; driver.getWindowHandles().toArray(handle); System.out.println("打开了"+handle.length+"个网页"); driver.switchTo().window(handle[2]); System.out.println("检查是否进入之前选择的商品页面:"+driver.getCurrentUrl().equals("http://item.jd.com/845638.html")); driver.quit(); } }
执行结果如下:
检查是否进入京东首页:true 检查搜索页面是否跳转正确:true 打开了3个网页 检查是否进入之前选择的商品页面:true
良言:希望众位能使用第一种方法,毕竟第二张是我瞎弄的,我不能保证将来不出错,而第一种,目前,大家都在使用。