让我解释一下问题陈述: 我想使用selenium为页面设计页面对象模型。并且要求是,在多个浏览器上执行的脚本将使用此类。我应该如何处理Page类中的元素定位器?我能想到的是
获取驱动程序对象,并使用if else选择浏览器特定的XPath来定位元素。就像驱动程序是chrome然后locateChromeElement。
为不同的浏览器创建不同的页面类。
创建基页类并根据浏览器扩展它。
最好的方法是什么?什么在工业中使用?
答案 0 :(得分:2)
完全取决于你的AUT(被测试的应用程序)。如果页面上有相同webelement的不同定位器(例如,在多语言站点的情况下),则使用属性文件存储webelements并根据您的页面命名(例如,对于HomePage类,您可以拥有不同的文件HomePage。 property(English),HomePage_it.properties(Italian)等)
通常情况下,如果您使用CSS获取位置webelement,几乎每个浏览器都会发现它相同。
答案 1 :(得分:0)
无论您使用哪种浏览器,xpath都是相同的。 要使脚本在多个浏览器中工作,您可以为不同的浏览器创建多个TestNg套件,并为所有套件提供相同的脚本。 您需要在套件中更改的只是浏览器类。 请考虑以下脚本
您可以一次运行整个代码。所有测试套件将一个接一个地执行
class MultipleBrowser{
//for Firefox
@Test
public void FirefoxBrowser()
{
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.findElement(By.id("lst-ib")).sendKeys("Automating in firefox Browser");
}
//for ChromeBrowser
@Test
public void ChromeBrowser()
{
WebDriver driver = new ChromeDriver(); //only the class is changed from firefoxDriver to ChromeDriver
driver.get("http://www.google.com");
driver.findElement(By.id("lst-ib")).sendKeys("Automating in Chrome Browser");
}
//for InternetExplorer
@Test
public void IEBrowser()
{
WebDriver driver = new InternetExplorerDriver(); //only the class is changed from ChromeDriver to IEDriver
driver.get("http://www.google.com");
driver.findElement(By.id("lst-ib")).sendKeys("Automating in IE Browser");
}
}