So the most obvious, and perhaps the easiest way, to get Selenium and SoapUI to cooperate is:
- Install SoapUI.
- Download Selenium (you need the selenium-server-standalone-2.*.jar)
and drop it into your SoapUI installation (into
%SOAPUI_HOME%\bin\ext
).
- Fire up SoapUI; start a new Project; create a new test case; add a
new Groovy step; copy-paste the sample code into the step. I made a
few modification: drop the
package
line, drop the class
Selenium2Example
and void main
lines along with the closing
brackets, and change the System.out.println
to log.info
. My final
(full) test code is below.
- Click Play. You should see Firefox starting up, navigating to
Google, and afterwards you should see the SoapUI log entries.
sample code:
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
// 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")
// 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
log.info("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() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!")
}
});
// Should see: "cheese! - Google Search"
log.info("Page title is: " + driver.getTitle())
//Close the browser
driver.quit()
This answer is a copy-paste from my blog.