本篇知识点:

  • 单击按钮
  • 双击某个元素
  • 操作单选下拉列表
  • 检查单选列表的选项文集是否符合期望
  • 操作多选的选项列表
  • 操作单选框
  • 操作复选框

单击按钮

被测试网页http://www.baidu.com

方法:页面元素.click()

	// 单击按钮
	@Test
	public void clickButton() {
		String url = "https://www.baidu.com";
		driver.navigate().to(url);
		WebElement input = driver.findElement(By.id("kw"));
		input.sendKeys("selenium");
		WebElement but = driver.findElement(By.id("su"));
		but.click();
	}

双击某个元素

被测试网页http://www.baidu.com

方法:Actions builder = new Actions(driver);
        builder.doubleClick(页面元素).build().perform();

	// 双击某个元素
	@Test
	public void DoubleClick() {
		String url = "https://www.baidu.com";
		driver.navigate().to(url);
		WebElement input = driver.findElement(By.id("kw"));
		Actions builder = new Actions(driver);
		builder.doubleClick(input).build().perform();
	}

操作单选下拉列表

被测试html代码

<html>
<body>
<select name='fruit' size =1>
<option id ='peach' value='taozi'>桃子</option>
<option id ='watermelon' value='xigua'>西瓜</option>
<option id ='orange' value='juzi'>橘子</option>
<option id ='kiwifruit' value='nihoutao'>猕猴桃</option>
<option id ='maybush' value='shanzha'>山楂</option>
<option id ='litchi' value='lizhi'>荔枝</option>
</select>
</body>
</html>

具体操作代码:

// 操作单选下拉列表
    @Test
    public void operateDropList() {
        String url = "file:///F:/workspace/WebDriver%20API/Single-option.html";
        driver.navigate().to(url);

        // 获取name属性为fruit的下拉列表元素
        Select droplist = new Select(driver.findElement(By.name("fruit")));
        // isMultiple表示此下拉列表是否允许多选。被测试的是一个单选下拉框,因此应该为false。
        // 添加断言判断是否为false。
        Assert.assertFalse(droplist.isMultiple());

        // getFirstSelectedOption().getText())获取当前被选中的下拉列表选项文本
        // 判断当前选中的选项文本是否为“桃子”
        Assert.assertEquals("桃子", droplist.getFirstSelectedOption().getText());

        // 选中下拉列表的第四个选项。(从0开始),即“猕猴桃”
        droplist.selectByIndex(3);
        Assert.assertEquals("猕猴桃", droplist.getFirstSelectedOption().getText());

        // 选中下拉列表中value为“shanzha”的选项,即“山楂”
        droplist.selectByValue("shanzha");
        Assert.assertEquals("山楂", droplist.getFirstSelectedOption().getText());

        // 选中下拉列表中,选项文字为“荔枝”的选项,即“荔枝”
        droplist.selectByVisibleText("荔枝");
        Assert.assertEquals("荔枝", droplist.getFirstSelectedOption().getText());

    }

检查单选列表的选项文集是否符合期望

被测试html代码跟上面的一样。

// 检查单选列表的选项文集是否符合期望
    @Test
    public void checkSelectText() {
        String url = "file:///F:/workspace/WebDriver%20API/Single-option.html";
        driver.navigate().to(url);

        // 获取name属性为fruit的下拉列表元素
        Select droplist = new Select(driver.findElement(By.name("fruit")));

        // 把预期的选项文字保存在list对象中
        List<String> expect_option = Arrays.asList((new String[] { "桃子", "西瓜", "橘子", "猕猴桃", "山楂", "荔枝" }));

        // 把下拉列表中的所有选项文字保存在list中
        List<String> actural_option = new ArrayList<String>();

        // getOptions()获取所有的选项
        for (WebElement option : droplist.getOptions()) {
            actural_option.add(option.getText());
        }
        //断言期望对象和实际对象的数组值是否一致。
        Assert.assertEquals(expect_option, actural_option);

    }

操作多选的选项列表

被测试html代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<select name='fruit' size =6 multiple=true>
<option id ='peach' value='taozi'>桃子</option>
<option id ='watermelon' value='xigua'>西瓜</option>
<option id ='orange' value='juzi'>橘子</option>
<option id ='kiwifruit' value='nihoutao'>猕猴桃</option>
<option id ='maybush' value='shanzha'>山楂</option>
<option id ='litchi' value='lizhi'>荔枝</option>
</select>
</body>
</html>

具体操作代码:

// 操作多选的选项列表
    @Test
    public void operateMultipleOptionDropList() {
        String url = "file:///F:/workspace/WebDriver%20API/multiple-option.html";//html的保存路径
        driver.navigate().to(url);

        // 获取name属性为fruit的下拉列表元素
        Select droplist = new Select(driver.findElement(By.name("fruit")));

        // 判断页面的下拉列表是否支持多选。
        Assert.assertTrue(droplist.isMultiple());

        //使用选择项索引选择“猕猴桃”选择。
        droplist.selectByIndex(3);
        //使用value属性值选择“山楂”选择。
        droplist.selectByValue("shanzha");
        //使用选择文字选择“荔枝”选择。
        droplist.selectByVisibleText("荔枝");

        //取消所有选项的选中状态
        droplist.deselectAll();
        
        //再次选中3个选项
        droplist.selectByIndex(3);
        droplist.selectByValue("shanzha");
        droplist.selectByVisibleText("荔枝");

        //取消索引为3的选项的选中状态
        droplist.deselectByIndex(3);
        //取消value属性值为“shanzha”的选项的选中状态
        droplist.deselectByValue("shanzha");
        //通过选项文字取消“荔枝”选项的选中状态
        droplist.deselectByVisibleText("荔枝");

    }

操作单选框

被测试的HTML页面代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form>
<input type="radio"name="fruit" value="berry"/>草莓</input>
<input type="radio"name="fruit" value="watermelon"/>西瓜</input>
<input type="radio"name="fruit" value="orange"/>橙子</input>

</form>

</body>
</html>

具体操作:

// 操作单选框
	@Test(enabled = false)
	public void operateRadio() {
		String url = "file:///F:/workspace/WebDriver%20API/Radio.html";//html的保存路径
		driver.navigate().to(url);

		// 通过xpath方式查找属性为‘berry’的单选按钮对象
		WebElement radioOption = driver.findElement(By.xpath("//input[@value='berry']"));

		// 如果没有选中,则用click()方法选中
		if (!radioOption.isSelected()) {
			radioOption.click();
		}
		// 断言判断是否已经被选中
		Assert.assertTrue(radioOption.isSelected());

		// 把所有name为fruit的单选按钮存在list中
		List<WebElement> fruits = driver.findElements(By.name("fruit"));

		for (WebElement fruit : fruits) {
			if (fruit.getAttribute("value").equals("watermelon")) {
				if (!fruit.isSelected()) {
					fruit.click();
					Assert.assertTrue(fruit.isSelected());
					break;
				}
			}
		}

	}

操作复选框

被测试html网页代码;

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form>
		<input type="checkbox" name="fruit" value="berry" />草莓 
		<br /> 
		<input type="checkbox" name="fruit" value="berry" />西瓜
		<br /> 
		<input type="checkbox" name="fruit" value="berry" />橘子
	</form>

</body>
</html>

具体代码:

//操作复选框
	@Test
	public void operateCheckBox(){
		String url = "file:///F:/workspace/WebDriver%20API/Checkbox.html";//html的保存路径
		driver.get(url);
		
		//查找出value值为orange的复选框元素
		WebElement orangeCheckbox=driver.findElement(By.xpath("//input{@value='orange'}"));
		if (!orangeCheckbox.isSelected()) {
			//如果这个复选框没有被选中,则调用click方法选中
			orangeCheckbox.click();
			//断言这个复选框被选中
			Assert.assertTrue(orangeCheckbox.isSelected());
		}
		
		//如果复选框处于选中状态,则调用click方法取消选中
		if (orangeCheckbox.isSelected()) {
			orangeCheckbox.click();
			//断言这个复选框没有被选中
			Assert.assertFalse(orangeCheckbox.isSelected());
		}
		//查找所有name属性是fruit的复选框,并存在在List中
		List<WebElement> fruits=driver.findElements(By.name("fruit"));
		//遍历list容器中的所有复选框,调用click方法单击所有复选框。
		for (WebElement checkbox : fruits) {
			checkbox.click();
		}
	}

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐