欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java+Selenium3方法篇14-元素操作之输入和点击

程序员文章站 2024-01-04 19:41:16
...

       前面文章介绍完了driver的一些常见的浏览器设置和查找元素的接口,接下来,我们找到了元素,是为了去操作元素。这篇介绍元素操作常见方法中的,给元素写入一个字符串,和点击元素。一般来讲,给元素输入一个字符串,这样的元素,一般是可以输入文本,基本上是inputbox这样的前端元素,还有些是textarea这样的元素。而点击元素,这个范围就大了,第一个肯定是点击按钮,除了按钮,单选,多选按钮,有些label标签和超链接也是用点击方法。给元素上传入一个字符串并显示在该元素上,我们用sendKeys()方法,点击元素,我们用click()方法。

我想先来看看sendKeys()和click()的源码。

public void click() {
    execute(DriverCommand.CLICK_ELEMENT, ImmutableMap.of("id", id));
  }

public void sendKeys(CharSequence... keysToSend) {
    File localFile = fileDetector.getLocalFile(keysToSend);
    if (localFile != null) {
      String remotePath = upload(localFile);
      keysToSend = new CharSequence[]{remotePath};
    }

    execute(DriverCommand.SEND_KEYS_TO_ELEMENT, ImmutableMap.of("id", id, "value", keysToSend));
  }
       上面第一个是我们需要调用的click()方法。click方法里面调用了DriverConmand类中的一个方法,叫CLICK_ELEMENT,也就是点击元素,这个方法底层应该是用javascript实现的。因为浏览器大部分都支持Javascript这个脚本语言。第二个方法是sendKes(),这个方法大致实现步骤是这样的:把你想要输入的字符串,放到本地一个文件,这样java就能识别这个文件,然后调用upload()方法,把这个包含字符串文件进行zip压缩,上传到一个浏览器端,然后浏览器端得到zip文件,进行加压缩,把文件里面的字符串提取出来,变成一个CharSequence对象,也就是一个新的有序的字符串对象,最后执行DriverCommad里面关于传字符到元素的方法。整个sendKeys()实现流程就是这样,了解一下就可以。

运用举例,用sendKeys()方法给百度搜索输入框输入一个关键词,用click()方法点击搜索提交按钮。

package lessons;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class FindElements {

	public static void main(String[] args) {
		System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
        
        WebDriver driver = new ChromeDriver();  
     
        driver.manage().window().maximize();  
       
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
          
        driver.get("https://news.baidu.com");  
        
        driver.findElement(By.id("kw")).sendKeys("Selenium");
        
        driver.findElement(By.id("su")).click();
        
	}

}
总结:

给元素上输入字符,就调用sendkeys()方法这个方法的参数,一般都是String类型,模拟鼠标左键,点击元素就调用click()方法,这两个方法没有返回值。基本上你的自动化测试脚本,大部分方法都是围绕这两个使用频率最高的事件服务。

上一篇:

下一篇: