WebDriver模拟输入方法

使用WebDriver模拟人工浏览器操作,可以实现完美的模拟操作,躲避大部分反爬虫机制。这里,再简单的介绍下常用的输入框填写模拟的方法。

1. 使用WebElement SendKeys方法

具体代码如下

Test
public void testSelenium() throws InterruptedException {
    System.getProperties().setProperty("webdriver.chrome.driver", "D:\\DevelopTools\\casper\\chromedriver.exe");
    Map<String, Object> contentSettings = new HashMap<String, Object>();
    contentSettings.put("images", 2);

    Map<String, Object> preferences = new HashMap<String, Object>();
    preferences.put("profile.default_content_settings", contentSettings);
    DesiredCapabilities caps = DesiredCapabilities.chrome();
    caps.setCapability("chrome.prefs", preferences);
    WebDriver webDriver = new ChromeDriver(caps);

    webDriver.get("https://www.baidu.com/");
    System.out.println(webDriver.getPageSource());
    WebElement inputElem = webDriver.findElement(By.id("kw"));
    System.out.println("execute javascript ...");
    inputElem.sendKeys("110中文");
    Thread.sleep(10000);
    webDriver.close();
}

对应的网页是百度搜索首页,选定其搜索框(id=kw),然后使用inputElem.sendKeys(“110中文”)即可。

2. 使用JavascriptExecutor或者RemoteWebDriver执行js脚本,模拟脚本输入

基本如上述代码,具体使用JavascriptExecutor方式如下

((JavascriptExecutor) webDriver).executeScript("arguments[0].value=\"110中文\"", inputElem);

当然,也可以直接使用js定位特定的文本框,如

((RemoteWebDriver) webDriver).executeScript("document.getElementById('kw').value='110中文'", null);

我们使用的时候会注意到,比较旧版本的chrome并不支持中文输入,这个需要调整版本才能支持;我实验成功的版本是49.0.2623.112 m版本,经过测试31大版本号开始就可以支持了,30版本不行。

其他输入方式后续逐步补充更新。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值