使用 Java 和 Selenium WebDriver 查找表单和 iframe 内部的元素。


我们可以使用 Selenium webdriver 查找表单和 iframe 内部的元素。html 文档中的表单由

标签表示。表单可以在其内部包含多个元素。表单可以通过 submit() 或 click() 方法提交。

让我们看看一个带有电子邮件和密码字段的表单。

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class FormElements{
   public static void main(String[] args) {
 System.setProperty("webdriver.chrome.driver","C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url = "https://www.linkedin.com/";
      driver.get(url);
      driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
      // identify elements
      driver.findElement(By.id("session_key")).sendKeys("[email protected]");
      driver.findElement(By.id("session_password")).sendKeys("test!23");
      // submitting form with submit()
      driver.findElement(By.id("session_password")).submit();
      driver.quit()
   }
}

iframe/frame 在 html 文档中使用 <iframe> 或 <frame> 标签标识。iframe 是嵌入在另一个 html 文档中的 html 文档。为了访问 iframe 内部的元素,我们需要将焦点从主页面切换到 iframe。

以下方法有助于在 iframe 之间切换 -

  • switchTo().frame(args) – 将 frame 索引作为参数传递给方法。iframe 的起始索引为 0。

    语法 -

    driver.switchTo().frame(0),切换到第一个 iframe。

  • switchTo().frame(args) - 将 frame 名称或 id 作为参数传递给方法。

    语法 -

    driver.switchTo().frame("nm"),切换到名称为 nm 的 iframe。

  • switchTo.frame(args) - 将 frame web 元素作为参数传递给方法。

    语法 -

    driver.switchTo().frame(f),切换到 web 元素为 f 的 iframe。

  • switchTo().defaultContent() – 从 iframe 切换焦点到父页面。

    语法 -

    driver.switchTo().defaultContent()

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class iFrameElement{
   public static void main(String[] args) {        System.setProperty("webdriver.chrome.driver","C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url = "https://the-internet.herokuapp.com/nested_frames";
      driver.get(url);
      driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
      // switch to a iframe
      driver.switchTo().frame("frame-bottom");
      // identify webelement
      WebElement m = driver.findElement(By.cssSelector("body"));
      System.out.println(" The text is: " +m.getText());
      // shift to parent page
      driver.switchTo().defaultContent();
      driver.close();
   }
}

更新于: 2020-09-18

2K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告