代码如下
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
良言:希望众位能使用第一种方法,毕竟第二张是我瞎弄的,我不能保证将来不出错,而第一种,目前,大家都在使用。