昨天我发布了此Retrieving Data in Java。我很好奇,有可能在打开网络浏览器的同时使Java程序运行,然后在网站上进行处理。如果我在浏览器上打开了facebook,是否可以在状态框中键入当前时间,然后单击发布?或者说我使程序能够接收用户的输入(也许使用扫描仪?),然后根据输入,它可以加载google,在搜索栏中键入它,然后单击搜索。
最佳答案
您可以使用Selenium来做到这一点:
Selenium使浏览器自动化。而已。您使用这种功能所要做的就是
完全取决于您。主要是用于自动化Web应用程序
出于测试目的,但当然不仅限于此。
无聊的基于Web的管理任务也可以(而且应该!)
以及自动化。
这是documentation page的示例,它在Google上搜索术语“奶酪”:
package org.openqa.selenium.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Selenium2Example {
public static void main(String[] args) {
// Create a new instance of the Firefox driver
// Notice that the remainder of the code relies on the interface,
// not the implementation.
WebDriver driver = new FirefoxDriver();
// And now use this to visit Google
driver.get("http://www.google.com");
// Alternatively the same thing can be done like this
// driver.navigate().to("http://www.google.com");
// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));
// Enter something to search for
element.sendKeys("Cheese!");
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
// Check the title of the page
System.out.println("Page title is: " + driver.getTitle());
// Google's search is rendered dynamically with JavaScript.
// Wait for the page to load, timeout after 10 seconds
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
// Should see: "cheese! - Google Search"
System.out.println("Page title is: " + driver.getTitle());
//Close the browser
driver.quit();
}
}