关于getCurrentUrl的获取问题

代码如下

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

良言:希望众位能使用第一种方法,毕竟第二张是我瞎弄的,我不能保证将来不出错,而第一种,目前,大家都在使用。

















转载于:https://my.oschina.net/Early20/blog/363303

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值