这是在 selenium 中使用 "switch()" 方法的正确方法吗?

Is this correct way to use "switch()" method in selenium?

目的:计算网页页脚部分的链接数。

而不是这个:

WebElement footerdriver=driver.findElement(By.id("gf-BIG"));
system.out.println(footerdriver.findElement(By.tagName("a")).size());

我想这样写:

WebElement footerdriver=driver.findElement(By.id("gf-BIG"));
driver.switch(footerdriver);
system.out.println(driver.findElement(By.tagName("a")).size());

这是在 selenium 中使用“switch()”方法的正确方法吗?

driver.switchTo();

只能用于切换到

  1. iframes/frame/frameset
  2. 新windows/tabs
  3. 警报
  4. 默认内容

因此,

WebElement footerdriver=driver.findElement(By.id("gf-BIG"));
driver.switch(footerdriver);

这是错误的,因为您说的是要切换到网络元素。

同样在 selenium 中它是 switchTo() 而不是 switch

除非我记错了,否则 switch() 不是属于 Selenium Webdriver 的方法。方法 switchTo() 用于将焦点更改为不同的 window、选项卡或 iframe。

如果我理解你的问题,你想找到一个从不同元素下降的元素。执行此操作的方法是使用 WebElement 方法 findElement(By locator) 查找元素。例如:

driver.get("https://www.wikipedia.org/");
WebElement eng = driver.findElement(By.xpath("//a[@id='js-link-box-en']"));
System.out.println(eng.findElement(By.tagName("span")).getText());

这将找到从元素“eng”派生的 span 元素。

Here is a runnable example of a test using the method.