driver.navigate().to()和driver.get()区别

在做一个后台管理系统的自动化测试,在登录时遇到了一些问题,比如浏览器认为当前url不安全,会有一个拦截,无法直接打开登录页面。这里用到了driver.navigate().to()方法,特此mark下。下面是查询资料的收获:
 
 
最近用一个实际的 web项目在学习Webdriver,关于新建一个备份任务的过程,先是有一个父页上button弹开一个子页,总共有4个子页,必须前一个页上的必填信息录完,才能在这个页面触发下一个子页。
 
如果在baseUrl1第一个子页录完信息,第一个子页有重命名校验和必填项校验。
 
进入baseUrl2第2个子页,用driver.navigate().to(baseUrl2),直接跳转到第2个页,不受第一个子页的约束,直接导航到第2个页面的输入。
 
这样会导致什么问题,第一个子页的信息是没有经过校验就进入下一个子页。这样,除了上面的重命名没有校验外,另外信息是否已经进入后台保存也是没有管的,而是直接在前台操作上直接进入下一个页面的操作,导致后台有可能数据丢失的情况,webdriver只管了前台界面的操作。
 
怎么避免后台数据丢失呢,那么就不能用:driver.navigate().to(baseUrl2)方法,这种方法太危险,不管实际的页面逻辑。
改用:driver.get(driver.getCurrentUrl()),这样通过实际的页面逻辑来获取URL结果,原理是当页面校验在前、后台通过后,点击“下一步”触发第二个子页时,会给出第二个子页的URL地址;如果页面校验在前、后台没有通过,那么就触发不了第二个页面,也就获得不了第二个页的URL地址,那么用driver.getCurrentUrl(),就获得不了最新页面的地址,也就无法跳转到第2个页面。如此,用driver.get(driver.getCurrentUrl())这样操作就保证跟页面的逻辑对应起来。也就不会脚本运行完成后,出现备份任务有时生成有时没有生成的情况。
调整到后面的子页,也是用相同的方法:driver.get(driver.getCurrentUrl());
但到第4个子页调整到父页时就不能用这个方法,因为driver.getCurrentUrl()这个获取不到父页的URL地址。只能再用一下driver.navigate().to(fatherURl),用这个方法,只要保证最后一个子页信息录入不存在丢失情况,就不影响备份任务单据的生成了。
修改 for 循环,爬取所有信息:public static void main(String[] args){ System.setProperty("webdriver.firefox.bin","C:\Users\Y\Desktop\软件测试\实验二\实验相关\FirefoxChina_13.0.1\Mozilla Firefox\firefox.exe"); WebDriver driver = new FirefoxDriver(); Navigation na = driver.navigate(); na.to("https://shz.58.com/ershoufang/"); driver.findElement(By.id("search-input")).clear(); List<WebElement> ele = driver.findElements(By.cssSelector("h3.property-content-title-name"));//爬取房屋名字 List<WebElement> ele1s=new ArrayList<>(); List<WebElement> ele3s=new ArrayList<>(); for(int j=1;j<=10;j++){ String s1="//div[@id='__layout']/div/section/section[3]/section/section[2]/div["+j+ "]/a/div[2]/div/section/div[@class='property-content-info']/p[2]"; String s3="//div[@id='__layout']/div/section/section[3]/section/section[2]/div["+j+ "]/a/div[2]/div/section/div[@class='property-content-info property-content-info-comm']/p[2]"; WebElement ele11 = driver.findElement(By.xpath(s1));//爬取房屋面积信息 WebElement ele33 = driver.findElement(By.xpath(s3));//爬取房屋地址信息 ele1s.add(ele11); ele3s.add(ele33); } List<WebElement> ele2 = driver.findElements(By.cssSelector("p.property-price-total"));//爬取房屋价格信息 for(int i=0;i<ele1s.size();i++){ System.out.println("名字:"+ele.get(i).getText()); System.out.println("地址:"+ele3s.get(i).getText()); System.out.println("面积:"+ele1s.get(i).getText()); System.out.println("价格:"+ele2.get(i).getText()); System.out.println(); } }
05-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值