1)如何打印页面标题和当前页面的url
public void TestBaiDu11(){//1.获取文章标题String title=driver.getTitle();System.out.println(title);//2.打印当前页面的urlString url=driver.getCurrentUrl();System.out.println(url);}
2)点击百度首页上面的这些新闻超链接,并将跳转后的新页面的url和title打印出来
1)点击了超链接之后我们打开了新的标签页,加上原来的百度首页一共就有两个标签页了但是此时对于selenium来说是不知道当前展示的页面是什么仍然还在定位第一个界面中的元素
2)selenium对每一个标签页都给了唯一的一个标识,但是selenium并不能直接跳转到我们所期望的一个页面,称之为句柄,每一个页面都有唯一的句柄,代表页面的唯一身份标识
3)窗口
1)获取当前页面的句柄:通过driver.getWindowHandle()来获取
public void TestBaiDu11(){String curWindow1=driver.getWindowHandle();System.out.println("页面跳转前的句柄是"+curWindow1);driver.findElement(By.linkText("新闻")).click();driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));String curWindow2=driver.getWindowHandle();System.out.println("页面跳转之后的句柄是"+curWindow2);}
由此可以看出在页面跳转之前和新标签页面打开之后,页面的句柄是没有发生任何变化的
2)获取到所有页面的句柄:通过driver.getWindowHandles()来进行获取,最终的返回值是Set
public void TestBaiDu11(){driver.findElement(By.linkText("新闻")).click();//页面显式等待driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));//获取到当前页面的所有页面句柄Set
allwindows=driver.getWindowHandles();for(String window:allwindows){System.out.println(window);}
3)那么我们如何切换到最新的页面呢?转换到最新的页面句柄呢
在这里面通过的是driver.switch().window(字符串类型(是操作页面句柄))
这个字符串是从所有的操作句柄中取出来的
就可以成功把selenium定位到新的标签页
public void TestBaiDu11(){//1.进行跳转到新闻页面driver.findElement(By.linkText("新闻")).click();driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));//2.在进行获取到当前所有页面的句柄LinkedHashSet
resultHandlers= (LinkedHashSet ) driver.getWindowHandles();List handlers=new ArrayList<>();//3.将其转化成一个字符串数组for(String window:resultHandlers){handlers.add(window);}//4.将句柄转移到最新的页面driver.switchTo().window(handlers.get(1));//5.获取到当前页面的url和titleString title=driver.getTitle();String url=driver.getCurrentUrl();System.out.println("当前页面的title是"+title+"\n"+"当前页面的url是"+url);} 这个时候这样的想法,直接写一个for循环,当i等于集合的长度的时候再进行跳转,但是Set集合是没有顺序的
4)窗口大小的设置
1)driver.manage().window().maximize();直接让窗口最大化 2)driver.manage().window().minimize();直接让窗口最小化 3)Dimension dimension=new Dimension(height,width);设置窗口的宽度和高度 driver.manage().window().setSize(dimension);5)窗面的移动
window.scroll(0,document.body.scrollTop)JS脚本滑动到最顶端
window.scroll(0,document.body.scrollHeight)JS脚本滑动到最底端
selenium不可以直接编译JS语言,但是仍然可以使用函数方法来执行JS脚本
driver.executeScript("JS的语言的字符串");6)导航:在selenium里面通过navigate()接口来实现页面的导航
前进:driver.navigate().forward()
后退:driver.navigate().back()