gpt4 book ai didi

java - WebDriver 废话

转载 作者:行者123 更新时间:2023-12-01 09:26:31 27 4
gpt4 key购买 nike

我不是 OOP 大师,也许还有一些更深层次的东西我没有理解,但这是让我很困扰的:

我不明白为什么 Selenium WebDriver 的所有示例和教程都使用 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);

所有驱动程序对象(GhostDriver 除外)都实现所有 WebDriver 方法,最终还会有更多方法。因此,基本上我可以在任何需要 WebDriver 对象的地方使用 FirefoxDriverChromeDriver,因为它们实现了 WebDriver 接口(interface)间接(所有驱动程序都继承自RemoteDriver,它实现了WebDriver接口(interface)),对吗?

那么,为什么不直接使用“真正的”驱动程序,而不是将它们创建为 WebDriver,然后通过强制转换等使代码复杂化呢?

你能给我任何实际的例子吗?什么时候使用WebDriverFirefoxDriver更好(例如)?

最佳答案

@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不是废话,在实际使用中是完全有意义的:)。

关于java - WebDriver 废话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39787971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com