WebDriver胡说八道

时间:2016-09-30 09:18:00

标签: java oop selenium selenium-webdriver

我不是OOP的大师,也许还有更深层次的东西我没有得到,但这里有很多困扰我的东西:

我没有看到WebDriver的所有示例和教程都使用WebDriver driver = new FirefoxDriver(); driver.get("http://www.google.com/"); File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 个对象的原因,例如:

WebDriver

在上面的示例中,我们需要添加更多代码,以便将TakesScreenshot转换为FirefoxDriver。为什么我们可以直接使用FirefoxDriver driver = new FirefoxDriver(); driver.get("http://www.google.com/"); File scrFile = driver.getScreenshotAs(OutputType.FILE); 对象:

WebDriver

所有驱动程序对象(GhostDriver除外)都实现了所有FirefoxDriver方法+最终还有一些方法。所以,基本上我可以使用ChromeDriverWebDriver任何地方需要WebDriver个对象,因为它们间接实现了RemoteDriver接口(所有驱动程序都继承自WebDriver,它实现了WebDriver接口),对吧?

那么,为什么不直接使用'真实'驱动程序,而不是将它们创建为WebDriver,然后使用castings使代码复杂化等等?

如果最好使用FirefoxDriver代替Sub test() Dim ws as worksheet Dim wsn as string wsn = sheets("procedures").range("a1").value Set ws = wsn ws.activate End sub (例如),能否给我一些实际的例子?

1 个答案:

答案 0 :(得分:1)

@CuriousGuy,这里有一个示例,您需要根据testNG套件上的配置(作为参数传递)实例化驱动程序对象,以便在不同的浏览器中测试UAT。 TestNG套件

<suite parallel="test" Thread-count=2>
<test>
    <parameter name="browser" value="FF"/>
    <classes>
        <class name="package.MyClassname"/>
    </classes>
</test>
<test>
    <parameter name="browser" value="Chrome"/>
    <classes>
        <class name="package.MyClassname1"/>
    </classes>
</test>

我们正在动态选择浏览器对象(OOP的多态概念)

class TestInit{
WebDriver driver;
@BeforeClass
@Parameters({"browser"})
public void intBowser(String browser){
    switch(browser){
        case "FF" :
            driver = new FireforDriver();
            break;
        case "Chrome":
            System.setProperty("webdriver.chrone.driver","path to your chromeDriver.exe");
            driver = new ChromeDriver();
            break;
        default:
            Logger.log("No available Driver");
    }
    driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.navigate().to("http://www.seleniumhq.org/");
}
@AfterClass
public void cleanup(){
    driver.close();
    driver.quit();
}
}

class Myclassname extends TestInit {
@Test
public void yourTestMethod(){
    // Dynamically selected driver object will be available here. 
}
}

希望,WebDriver不是废话,它在实际使用中很有意义。