我刚刚发现了硒 - 一个很棒的工具!
我计划运行/使用selenium-ide生成的junit4代码。但我需要它与许多浏览器/网络驱动程序一起运行。
这个用例是否有junit / java-pattern?我的第一个想法是使用@RunWith(Parameterized.class)
并提供WebDrivers列表(该类的参数 - 可能作为列出浏览器和版本的外部文件提供?!)。这是一个好主意吗?是否有可能提供一个中心的@Parameters
方法,供我所有的Selenium测试使用?
有哪些替代品?
可能有可能更改Selenium导出的“格式”以最小化手动更改?
答案 0 :(得分:5)
好吧,我确实需要不时切换驱动程序,所以我这样做了:
我在我自己的类中初始化与selenium相关的东西 - 由应用程序的名称调用,并且getter接近驱动程序。在调用我的类构造函数时,我使用枚举类型的驱动程序来初始化:
private WebDriver driver;
public TestUI(Environment.DriverToUse drv){
switch (drv){
case CHROME:{
ChromeDriverService service = ChromeDriverService.createDefaultService();
File file = new File(TestUI.class.getResource("/chromedriver.exe").toURI());
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, file.getAbsolutePath());
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver(service,options);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
break;
}
case FIREFOX:{
FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.setPreference("browser.safebrowsing.malware.enabled", false);
driver = new FirefoxDriver(ffProfile);
driver.manage().window().setPosition(new Point(0, 0));
java.awt.Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension dim = new Dimension((int) screenSize.getWidth(), (int) screenSize.getHeight());
driver.manage().window().setSize(dim);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
break;
}
public WebDriver getDriver(){
return driver;
}
当然我的Environment
课程看起来像这样
public class Environment {
public enum DriverToUse {FIREFOX, CHROME};
// .. and some other stuff, because I need to test on different environments, so I store here Environment URL for example
我的测试类看起来像这样
@Before
public static final Environment.DriverToUse USED_DRIVER = Environment.DriverToUse.FIREFOX;
@Test
public void testVersionNumber() throws Exception{
TestUI testUI= new TestUI(USED_DRIVER);
WebElement version = testUI.getDriver().findElement(By.id("the Id of element"));
version.click();
//...
}
答案 1 :(得分:1)
使用Selenium RC / Selenium Server。这些API带有您需要在多个浏览器中运行远程测试。快乐狩猎!
答案 2 :(得分:0)
查看Selenide库。它是硒的开源包装器,使UI测试变得轻而易举。这是一个示例测试。
@Test
public void userCanLoginByUsername() {
open("/login");
$(By.name("user.name")).setValue("johny");
$("#submit").click();
$(".loading_progress").should(disappear); // Waits until element disappears
$("#username").shouldHave(text("Hello, Johny!")); // Waits until element gets text
}