Selenium 简明教程
Selenium WebDriver - WebElement Commands
Selenium Webdriver 可用于提取网页上特定元素的多种信息。例如,我们可以验证网页上的元素是否可用/不可用、已启用/已禁用或已选择/未选择。
Basic WebElement Commands in Selenium Webdriver
-
要验证元素是否在网页上可用,我们可以借助 isDisplayed() 方法。如果该元素可用,isDisplayed() 将返回 true,否则返回 false。
-
要验证元素是否在网页上处于选中状态,我们可以借助 isSelected() 方法。如果该元素处于选中状态,isSelected() 将返回 true,否则返回 false。
-
要验证网页上的元素是否已启用,我们可以利用 isEnabled() 方法。如果该元素已启用,isEnabled() 将返回 true,否则返回 false。
-
要获取某个元素的标签名,我们可以利用 getTagName() 方法。
-
要获取某个元素的 x 和 y 坐标,我们可以利用的 getRect() 方法。
-
要获取某个元素的背景颜色或颜色,我们可以利用 getCssValue() 方法。
-
要获取与 DOM 关联的元素的运行时值,我们可以利用 getAttribute() 方法,并将值作为参数传入该方法。
-
要获取某个元素的文本,我们可以利用 getText() 方法。
Identify Radio Buttons in HTML
在网页上单击鼠标右键,然后在 Chrome 浏览器中单击“检查”按钮。要检查页面上的单选按钮,单击可见 HTML 代码顶部可用的左上方箭头,如下所示。
一旦我们单击并指向单选按钮(在下图中突出显示),就看到了其 HTML 代码,此代码反映了输入标签名和类型属性的值为单选按钮。
Example 1
让我们以上述页面为例,使用 click() 方法单击其中一个单选按钮。然后,使用上述讨论过的方法验证该单选按钮是否可用、已启用且已选中。
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 java.util.concurrent.TimeUnit;
public class ValidatingRadioButtons {
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 click radio button
driver.get("https://www.tutorialspoint.com/selenium/practice/radio-button.php");
// identify radio button then click
WebElement radiobtn = driver.findElement
(By.xpath("/html/body/main/div/div/div[2]/form/div[1]/input"));
radiobtn.click();
// verify if radio button is selected
boolean result = radiobtn.isSelected();
System.out.println("Checking if a radio button is selected: " + result);
// verify if radio button is displayed
boolean result1 = radiobtn.isDisplayed();
System.out.println("Checking if a radio button is displayed: " + result1);
// verify if radio button is enabled
boolean result2 = radiobtn.isEnabled();
System.out.println("Checking if a radio button is enabled: " + result2);
// identify another radio button
WebElement radiobtn1 = driver.
findElement(By.xpath("/html/body/main/div/div/div[2]/form/div[5]/input"));
// verify if radio button is disabled
boolean result3 = radiobtn1.isEnabled();
System.out.println("Checking if the other radio button is disabled: " + result3);
// verify if radio button is unselected
boolean result4 = radiobtn1.isEnabled();
System.out.println("Checking if the other radio button is unselected: " + result4);
// Closing browser
driver.quit();
}
}
Checking if a radio button is selected: true
Checking if a radio button is displayed: true
Checking if a radio button is enabled: true
Checking if the other radio button is disabled: false
Checking if the other radio button is unselected: false
Process finished with exit code 0
在上面的示例中,我们首先单击了一个单选按钮,然后使用消息 - Checking if a radio button is selected: true, Checking if a radio button is displayed: true, Checking if a radio button is enabled: true 验证该单选按钮在控制台中是否可用、选中和启用。
然后,我们针对另一个单选按钮验证其是否禁用且未选中,并在控制台中显示消息 - Checking if the other radio button is disabled: false, and Checking if the other radio button is unselected: false 。
最后,收到了消息 Process finished with exit code 0 ,表示代码成功执行。
Example 2
我们可以使用 getTagName() 方法获取单选按钮的标签名。
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 java.util.concurrent.TimeUnit;
public class RadioButtonTagNames {
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 click radio button
driver.get("https://www.tutorialspoint.com/selenium/practice/radio-button.php");
// identify radio button then click
WebElement radiobtn = driver.findElement
(By.xpath("/html/body/main/div/div/div[2]/form/div[1]/input"));
String text = radiobtn.getTagName();
System.out.println("Get the radio button tagname: " + text);
// Closing browser
driver.quit();
}
}
Get the radio button tagname: input
Process finished with exit code 0
在上面的示例中,我们使用消息 - Get the radio button tagname: input 在控制台中获取了单选按钮的标签名。
Example 3
让我们来看下图的另一个示例,我们使用 getRect() 方法获取页面上文本 Selenium - Automation Practice Form 的高度、宽度、x 和 y 坐标。
代码实现
package org.example;
import org.openqa.selenium.By;
import org.openqa.selenium.Rectangle;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class ElementPositions {
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
driver.get("https://www.tutorialspoint.com/selenium/practice/radio-button.php");
// Identify the element with xpath locator
WebElement e = driver.findElement(By.xpath("/html/body/div/header/div[2]/h1"));
Rectangle res = e.getRect();
// Getting height, width, x, and y coordinates of element
System.out.println("Getting height: " + res.getHeight());
System.out.println("Getting width: " + res.getWidth());
System.out.println("Getting x-cordinates: " + res.getX());
System.out.println("Getting y-cordinates: " + res.getY());
// Closing browser
driver.quit();
}
}
Getting height: 29
Getting width: 395
Getting x-cordinates: 453
Getting y-cordinates: 18
Process finished with exit code 0
在上面的示例中,我们使用消息 - Getting height: 29, Getting width: 395, Getting x-cordinates: 453, and Getting y-cordinates: 18 在控制台中获取了文本的高度、宽度、x 和 y 坐标。
Example 4
让我们来看下图的另一个示例,我们将在突出显示的元素 Login (在“样式”部分中描绘)上设置背景颜色。我们将使用 getCssValue() 方法,并将背景颜色作为参数传入该方法。
代码实现
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 java.util.concurrent.TimeUnit;
public class ElementsCSSProperty {
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
driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php");
// Identify the element with xpath locator
WebElement e = driver.findElement(By.xpath("//*[@id='practiceForm']/div[11]/input"));
// Getting background color of the element
System.out.println ("Getting background color of element: " + e.getCssValue("background-color"));
// Closing browser
driver.quit();
}
}
Getting background color of element: rgba(13, 110, 253, 1)
Process finished with exit code 0
在上面的示例中,我们使用消息 - Getting background color of element: rgba(13, 110, 253, 1) 在控制台中以 rgb 格式获取了页面上某个元素的背景。
Example 5
让我们来看一下下面页面的示例,我们首先使用 sendKeys() 方法在输入框中输入文本 Selenium 。然后,我们使用 getAttribute() 方法获取与 DOM 关联的元素的运行时值,并将值作为参数传入。
代码实现
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 java.util.concurrent.TimeUnit;
public class InputBoxs {
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
driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php");
// Identify the element with xpath locator
WebElement em = driver.findElement
(By.xpath("//*[@id='name']"));
// enter text in input box
em.sendKeys("Selenium");
// Get the value entered
String t = em.getAttribute("value");
System.out.println("Text entered: " + t);
// clear the text entered
em.clear();
// Get no text after clearing text
String t1 = e.getAttribute("value");
System.out.println("Get text after clearing: " + t1);
// Closing browser
driver.quit();
}
}
Entered text is: Selenium
Get text after clearing:
Process finished with exit code 0
在上面的示例中,我们首先在输入框中输入文本 Selenium ,还使用消息 - Text entered: Selenium 来检索在控制台中输入的值。然后清除输入的值,输入框中没有值。因此,我们还在控制台中收到了消息: Get text after clearing: 。
Example 6
我们以下面的页面为例,我们将在 getText() 方法的帮助下获得高亮元素的文本 - Selenium - Automation Practice Form 。
代码实现
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 java.util.concurrent.TimeUnit;
public class ElementsText {
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
driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php");
// Identify the element with xpath locator
WebElement e = driver.findElement
(By.xpath("/html/body/div/header/div[2]/h1"));
// Getting text of the element
System.out.println
("Getting element text: " + e.getText());
// Closing browser
driver.quit();
}
}
Getting element text: Selenium - Automation Practice Form
Process finished with exit code 0
在上面的示例中,我们通过消息 - Getting element text: Selenium - Automation Practice Form 在控制台获得了某个元素的文本。