【发布时间】:2021-05-12 00:20:10
【问题描述】:
大家好,我正在学习 Selenium,我不太清楚上述两个函数是如何工作的: 问题陈述:
我有一个练习作业说:转到http://the-internet.herokuapp.com/
点击一个链接> 多个窗口打开一个窗口> 点击>> 点击这里打开另一个窗口>> 从这个窗口抓取文本并打印它然后返回到这个http://the-internet.herokuapp.com/windows 并打印文本。
Que1) 如果我使用 driver.getWindowHandle() 并为每个窗口打印它,它的值保持不变,所以这个方法总是返回父窗口或者它的工作方式不同。
Ques2) 当我使用 driver.getWindowHandles() 时,它返回集合中的 2 个值。 driver.getWindowHandles() 是否也返回父窗口。 (我不确定是否应该有 2 个或 3 个值,因为我有 3 个 URL,我认为该集合应该有 3 个)
问题3) 有人可以分享使用多个子窗口 id 的最有效方法吗:
用迭代器方法设置 人们还将 Set 转换为 Arraylist,然后使用 get 方法。 [这是一个更好的方法]
代码:
driver.get("http://the-internet.herokuapp.com/");
String p1=driver.getWindowHandle();
System.out.println(p1);
text1=driver.findElement(By.xpath("//a[@href='/windows']"));
text1.click();
WebElement
text2=driver.findElement(By.xpath("//a[@href='/windows/new']"));
text2.click();
Set<String> child=driver.getWindowHandles();
System.out.println(child.size());
ArrayList<String> children=new ArrayList<String>(child);
System.out.println(children);
driver.switchTo().window(children.get(1));
System.out.println(driver.findElement(By.xpath("//div[@class='example']/h3")).getText());
driver.close();
driver.switchTo().window(children.get(0));
System.out.println(driver.findElement(By.xpath("//div[@class='example']/h3")).getText());
driver.switchTo().window("");
System.out.println(driver.getCurrentUrl());
driver.close();
【问题讨论】:
-
由于有
WebElement的行,该代码似乎无法编译——我可以假设您在运行此代码时已修复该问题吗?
标签: java selenium selenium-webdriver webdriver