selenium-webdriver
Huvudlösa webbläsare
Sök…
PhantomJS [C #]
PhantomJS
är en fullt utrustad huvudlös webbläsare med JavaScript-stöd.
Innan du börjar måste du ladda ner en PhantomJS- drivrutin och se till att sätta detta i början av din kod:
using OpenQA.Selenium;
using OpenQA.Selenium.PhantomJS;
Bra, nu på initieringen:
var driver = new PhantomJSDriver();
Detta skapar helt enkelt en ny instans av klassen PhantomJSDriver. Du kan sedan använda det på samma sätt som alla webbdrivrutiner som:
using (var driver = new PhantomJSDriver())
{
driver.Navigate().GoToUrl("http://stackoverflow.com/");
var questions = driver.FindElements(By.ClassName("question-hyperlink"));
foreach (var question in questions)
{
// This will display every question header on StackOverflow homepage.
Console.WriteLine(question.Text);
}
}
Det här fungerar bra. Men problemet du troligtvis stött på är att när du arbetar med UI öppnar PhantomJS
ett nytt konsolfönster, vilket inte är riktigt önskat i de flesta fall. Lyckligtvis kan vi dölja fönstret och till och med förbättra prestandan med PhantomJSOptions
och PhantomJSDriverService
. Fullständigt fungerande exempel nedan:
// Options are used for setting "browser capabilities", such as setting a User-Agent
// property as shown below:
var options = new PhantomJSOptions();
options.AddAdditionalCapability("phantomjs.page.settings.userAgent",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0");
// Services are used for setting up the WebDriver to your likings, such as
// hiding the console window and restricting image loading as shown below:
var service = PhantomJSDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
service.LoadImages = false;
// The same code as in the example above:
using (var driver = new PhantomJSDriver(service, options))
{
driver.Navigate().GoToUrl("http://stackoverflow.com/");
var questions = driver.FindElements(By.ClassName("question-hyperlink"));
foreach (var question in questions)
{
// This will display every question header on StackOverflow homepage.
Console.WriteLine(question.Text);
}
}
Pro tip: klicka på en klass (t.ex. PhantomJSDriverService
) och tryck på F12 för att se exakt vad de innehåller tillsammans med en kort beskrivning av vad de gör.
SimpleBrowser [C #]
SimpleBrowser
är en lätt WebDriver utan JavaScript-stöd.
Det är betydligt snabbare än ovan nämnda PhantomJS
, men när det gäller funktionalitet är det begränsat till enkla uppgifter utan snygga funktioner.
Först måste du ladda ner SimpleBrowser.WebDriver- paketet och sedan sätta den här koden i början:
using OpenQA.Selenium;
using SimpleBrowser.WebDriver;
Här är ett kort exempel på hur du använder det:
using (var driver = new SimpleBrowserDriver())
{
driver.Navigate().GoToUrl("http://stackoverflow.com/");
var questions = driver.FindElements(By.ClassName("question-hyperlink"));
foreach (var question in questions)
{
// This will display every question header on StackOverflow homepage.
Console.WriteLine(question.Text);
}
}
Huvudlös webbläsare i Java
HTMLUnitDriver
HTMLUnitDriver är den mest lätta implementeringen av huvudlös (GUI-mindre) webbläsare för webbdrivare baserad på HtmlUnit. Den modellerar HTML-dokument och tillhandahåller ett API som låter dig åberopa sidor, fylla i formulär, klicka på länkar osv. Precis som du gör i din vanliga webbläsare. Det stöder JavaScript och fungerar med AJAX-bibliotek. Det används för att testa och hämta data från webbplatsen.
Exempel: Använd HTMLUnitDriver för att hämta en lista med frågor från http://stackoverflow.com/
.
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
class testHeadlessDriver{
private void getQuestions() {
WebDriver driver = new HtmlUnitDriver();
driver.get("http://stackoverflow.com/");
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
List<WebElement> questions = driver.findElements(By.className("question-hyperlink"));
questions.forEach((question) -> {
System.out.println(question.getText());
});
driver.close();
}
}
Det är samma som alla andra webbläsare (Mozilla Firefox, Google Chrome, IE), men den har inte GUI, exekvering är inte synlig på skärmen.