对象存储库 Selenium

什么是对象存储库?
对象存储库是所有对象的公共存储位置。 Selenium WebDriver 上下文,对象通常是用于唯一标识 Web 元素的定位器。
使用对象库的主要优势在于将对象与测试用例分离。如果某个网页元素的定位器值发生变化,只需修改对象库,而无需修改所有使用该定位器的测试用例。维护对象库可以提高框架实现的模块化程度。
对象存储库的类型 Selenium 网络驱动程序
Selenium WebDriver 默认不提供内置的对象存储库。但是,可以使用键值对的方式构建对象存储库,其中键指的是对象的名称,值指的是用于在网页中唯一标识对象的属性。
以下是可以在以下位置创建的对象存储库类型 Selenium WebDriver。
- 使用属性文件的对象存储库
- 使用 XML 文件的对象存储库
Selenium 使用属性文件的 Web 驱动程序对象存储库
在这种方法中,属性文件是一个文本文件,其中数据以键值对的形式存储。以下教程将介绍以下主题。
步骤 1)在 eclipse 中创建一个属性文件
- 首先,需要在 Eclipse 中创建如下的 Java 项目结构。项目名称和包名称可以是任何有效的名称。
- 右键单击主项目文件夹,然后选择“新建”->“其他”
- 在下一个窗口中,选择“常规”->“文件”,然后单击“下一步”按钮。
- 在新文件资源窗口中,提供一个扩展名为“.properties”的有效文件名,然后单击“完成”按钮。
- 项目结构中必须显示名为“application.properties”的文件。
步骤 2)将数据存储到属性文件中
- 数据以键值对的形式存储在属性文件中,其中键在整个文件中是唯一的。
- 我们将尝试使用属性文件,通过定位器值来识别网页元素。
- 打开 application.properties 文件 Eclipse 并存储以下数据
MobileTesting=//a[text()='MOBILE TESTING'] EmailTextBox = philadelphia-field-email SignUpButton = philadelphia-field-submit
4)本教程使用以下演示网站:
https://demo.guru99.com/test/guru99home/以下是测试场景:
- 使用 XPath 点击“移动测试”链接
- 返回
- 使用 ID 在电子邮件文本框中输入数据
- 使用 ID 点击注册按钮
步骤 3)从属性文件读取数据
- 可以使用 java.util 包中提供的内置 Properties 类从属性文件中读取数据。
- 首先,需要按如下方式创建 Properties 类的对象。
Properties obj = new Properties();
- 我们需要创建一个 FileInputStream 类的对象,并传入属性文件的路径。
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- 可以使用 Java 中 Properties 类提供的 load 方法从属性文件中读取数据。以下代码演示了 load 方法的用法。
Properties obj = new Properties(); FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties"); obj.load(objfile); String mobileTesting = obj.getProperty("MobileTesting");
字符串“mobileTesting”将包含 XPATH 来识别网页内的移动测试链接。
步骤 4)在测试脚本中使用属性文件
可以通过从属性文件中读取数据并将其作为参数传递给 `findElement` 方法,在测试脚本中使用属性文件。以下代码演示了如何在测试脚本中使用从属性文件中读取的数据。
driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click(); driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();
以下是用于上述测试场景的完整代码。
package com.objectrepository.demo; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class DemoOR { public static void main(String[] args) throws IOException { // Create WebDriver Instance WebDriver driver; System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/guru99home/"); driver.manage().window().maximize(); // Load the properties File Properties obj = new Properties(); FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties"); obj.load(objfile); // Navigate to link Mobile Testing and Back driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click(); driver.navigate().back(); // Enter Data into Form driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(obj.getProperty("SignUpButton"))).click(); } }
Selenium 使用 XML 文件的 WebDriver 对象存储库
XML 代表可扩展标记语言。XML 文件使用文档对象模型 (DOM) 作为基本结构。XML 文件格式会复制网页所基于的 HTML 格式。以下是我们将要涵盖的主题列表。
步骤 1)在 eclipse 中创建一个 XML 文件
- 需要在以下位置创建 Java 项目结构 Eclipse.
- 右键点击项目文件夹,选择新建->其他
- 在 XML 文件夹中选择 XML 文件,然后单击“下一步”按钮。
- 输入有效的 XML 文件名,然后单击“完成”按钮
- XML 文件将添加到项目文件夹中,如下所示
步骤 2)将数据存储到 XML 文件
数据可以以文档对象模型(DOM)的形式存储在 XML 文件中。为简单起见,我们可以使用以下测试场景作为示例。
- 使用 XPath 点击“移动测试”链接
- 返回首页
- 使用 ID 在电子邮件文本框中输入数据
- 使用 ID 点击注册按钮
以下是要使用的 XML 文件格式。
<menu> <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting> <email> philadelphia-field-email</email> <signup> philadelphia-field-submit </signup> </menu>
将上述 XML 代码存储在 properties.xml 中
在设计选项卡中你会看到
步骤 3)从 XML 文件读取数据
1. 可以使用 Java 内置的 'dom4j' 类从 XML 文件中读取数据。请注意,在继续编写代码之前,需要将以下 JAR 文件添加到项目的构建路径中。
- jaxen.jar
- dom4j-1.6.jar
2. 下面的代码用于从 XML 文件中读取数据。
File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml"); SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputFile); String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText(); String emailTextBox = document.selectSingleNode("//menu/email").getText(); String signUpButton = document.selectSingleNode("//menu/signup").getText();
3. 首先,我们需要创建一个 File 对象,并将其作为参数传递给 SAXReader 类的 'read' 方法。XML 文件数据读取成功后,我们可以使用 'selectSingleNode' 方法访问 XML 文档中的各个节点。
步骤 4)在测试脚本中使用 XML 文件
可以通过从 XML 文件中读取数据,并将数据作为参数传递给 `findElement` 方法,在测试脚本中使用 XML 文件。以下代码演示了如何在测试脚本中使用从 XML 文件读取的数据。
driver.findElement(By.xpath(mobileTesting)).click(); driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(signUpButton)).click();
以下代码演示了如何在 Selenium WebDriver 中使用 XML 文件。
package com.objectrepository.demo; import java.io.*; import java.util.*; import org.dom4j.*; import org.dom4j.io.SAXReader; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class DemoORXML { public static void main(String[] args) throws DocumentException { // Creating WebDriver Instance WebDriver driver; System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/guru99home/"); driver.manage().window().maximize(); // Reading XML File File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml"); SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputFile); String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText(); String emailTextBox = document.selectSingleNode("//menu/email").getText(); String signUpButton = document.selectSingleNode("//menu/signup").getText(); // Navigating to Mobile Testing and back driver.findElement(By.xpath(mobileTesting)).click(); driver.navigate().back(); // Entering Form Data driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(signUpButton)).click(); } }













