Selenium 简明教程
Selenium WebDriver - Input Boxes
Selenium WebDriver 可用于处理输入框(也称为文本框)。在 HTML 术语中,每个输入框都由标签名 input 识别。
Identification of Input Boxes in HTML
打开任意一个浏览器(例如 Chrome),右键单击网页,然后单击“检查”按钮。然后,网页的完整 HTML 代码将显示出来。要检查页面上的输入框,请单击 HTML 代码顶部提供的左上箭头,如下图中突出显示所示。
在单击箭头并将箭头指向输入框(下图中突出显示)后,其 HTML 代码便可见,反映了 input 标签名(<> 中包含)。
Example 1- Input Text with sendKeys
我们以上述页面为例,首先在 * input box* 中输入一些文本,方法是使用 sendKeys() 方法。然后,我们用 clear() 方法清除输入的文本。
package org.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import java.util.concurrent.TimeUnit;
public class EnterText{
public static void main(String[] args) throws InterruptedException {
// Initiate the Webdriver
WebDriver driver = new EdgeDriver();
// adding implicit wait of 10 secs
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Opening the webpage
driver.get("https://www.tutorialspoint.com/selenium/practice/text-box.php");
// Identify the input box
WebElement elm = driver.findElement(By.xpath("//*[@id='fullname']"));
// enter text
elm.sendKeys("Java");
// Get the value
String txt = driver.findElement(By.xpath("//*[@id='fullname']")).getAttribute("value");
System.out.println("Entered text: " + text);
// clear the text entered
elm.clear();
// Get no text
String txt1 = driver.
findElement(By.xpath("//*[@id='fullname']")).getAttribute("value");
System.out.println("Get text after clearing: " + txt1);
// Closing browser
driver.quit();
}
}
Example 2 - Input Text with Actions Class
我们还可以将 sendKeys() 方法与 Selenium 中的 * Actions Class* 一起使用。我们将采用上面讨论的相同示例,并查看实施情况。
package org.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import java.util.concurrent.TimeUnit;
public class HandlingInputBoxWithActions {
public static void main(String[] args) throws InterruptedException {
// Initiate the Webdriver
WebDriver driver = new ChromeDriver();
// adding implicit wait of 15 secs
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
// Opening the webpage where we will identify edit box to enter driver.get("https://www.tutorialspoint.com/selenium/practice/text-box.php");
// Identify the input box with xpath locator
WebElement e = driver.findElement(By.xpath("//*[@id='fullname']"));
// enter text in input box using Actions class
Actions action = new Actions(driver);
action.sendKeys(e, "SeleniumS").perform();
// Get the value entered
String text = driver.
findElement(By.xpath("//*[@id='fullname']")).getAttribute("value");
System.out.println("Entered text with Actions class is: " + text);
// clear the text entered
e.clear();
// Get no text after clearing text
String text1 = driver.
findElement(By.xpath("//*[@id='fullname']")).getAttribute("value");
System.out.println("Get text after clearing: " + text1);
// Closing browser
driver.quit();
}
}
Example 3 - Input Text with JavaScriptExecutor
我们还可以使用 * JavaScriptExecutor* 在 Selenium 中的输入框中输入文本。我们将采用上面讨论的相同示例。
package org.example;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class HandlingInputBoxWithJS {
public static void main(String[] args) throws InterruptedException {
// Initiate the Webdriver
WebDriver driver = new ChromeDriver();
// adding implicit wait of 15 secs
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
// Opening the webpage where we will identify edit box to enter
driver.get("https://www.tutorialspoint.com/selenium/practice/text-box.php");
// Identify the input box with xpath locator
WebElement e = driver.findElement(By.xpath("//*[@id='fullname']"));
// enter text in input box using JavascriptExecutor
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
javascriptExecutor.executeScript("arguments[0].setAttribute('value', 'Selenium Java')", e);
// Get the value entered
String text = driver.findElement(By.xpath("//*[@id='fullname']")).getAttribute("value");
System.out.println("Entered text with JavaScript Executor is: " + text);
// clear the text entered
e.clear();
// Get no text after clearing text
String text1 = driver.
findElement(By.xpath("//*[@id='fullname']")).getAttribute("value");
System.out.println("Get text after clearing: " + text1);
// Closing browser
driver.quit();
}
}
Output
Entered text with JavaScript Executor is: Selenium Java
Get text after clearing:
Process finished with exit code 0
在上述示例中,我们首先在输入框中输入文本 Selenium Java ,并通过消息 - Entered text with JavaScript Executor is: Selenium Java 从控制台中获取输入的值。然后,清除输入的值,并在清除文本后没有在输入框中获取到值,随后从控制台中收到消息: Get text after clearing: 。