除非在@Test

时间:2018-03-21 21:29:16

标签: java selenium-webdriver automation webdriver ui-automation

我是Selenium&的新手。也是Java的新手。所以也许我错过了一些显而易见的东西,但是我现在已经开了一段时间了,不能继续前进&完全绝望。请帮忙!

这是我的设置:

我的自定义Driver类实现了WebDriver&设置属性:

 public class Driver implements WebDriver {

    private WebDriver driver;
    private String browserName;

    public Driver(String browserName) throws Exception {
        this.browserName = browserName;
        if(browserName.equalsIgnoreCase("chrome")) {
            System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver");
            this.driver = new ChromeDriver();
        }
        else if(browserName.equalsIgnoreCase("firefox")) {
                System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver");
                this.driver = new FirefoxDriver();
            }
         else {
                throw new Exception("Browser is not correct");
            }
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        }

<...>
}

BaseTest类获取属性&amp;在@BeforeClass方法中创建驱动程序的新实例(运行测试时使用maven命令传递的浏览器名称):

String browserName = getParamater("browser");
driver = new Driver(browserName); 

在@Test内的Test类中,我创建了新的动作&amp;从BaseTest传递驱动程序:

Actions builder = new Actions(driver);
Action mouseOverHome = builder
        .moveToElement(pb.testGoodle)
        .build();
mouseOverHome.perform();

此代码不起作用 - &gt;没有执行的操作(没有鼠标悬停或任何东西),也没有错误。

但是如果我创造&amp;在@Test本身内定义新的WebDriver:

System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver");
WebDriver driver = new FirefoxDriver();

行动完美。 任何想法或提示非常感谢!

1 个答案:

答案 0 :(得分:0)

解决!解决!问题出在Page Object中的混乱动作声明中!这里是页面对象中的内容:

DispatchQueue(label: "background", autoreleaseFrequency: .workItem).async {
    let realm = try! Realm()
    let theDog = realm.objects(Dog.self).filter("age == 1").first
    try! realm.write {
        theDog!.age = 3
    }
}