在selenium中处理多个浏览器的最佳方法是什么?

时间:2017-09-06 08:12:07

标签: java selenium xpath automation

让我解释一下问题陈述: 我想使用selenium为页面设计页面对象模型。并且要求是,在多个浏览器上执行的脚本将使用此类。我应该如何处理Page类中的元素定位器?我能想到的是

  1. 获取驱动程序对象,并使用if else选择浏览器特定的XPath来定位元素。就像驱动程序是chrome然后locateChromeElement。

  2. 为不同的浏览器创建不同的页面类。

  3. 创建基页类并根据浏览器扩展它。

  4. 最好的方法是什么?什么在工业中使用?

2 个答案:

答案 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");
 }
 }