Q #1) 什么是自动化测试?
自动化测试或测试自动化是自动化手动过程以测试被测应用程序/系统的过程。自动化测试涉及使用单独的测试工具,该工具可让您创建可以重复执行且不需要任何手动干预的测试脚本。
Q #2) 自动化测试有什么好处?
自动化测试的好处是:
- 支持重复执行测试用例
- 有助于测试大型测试矩阵
- 启用并行执行
- 鼓励无人值守执行
- 提高准确性,从而减少人为错误
- 节省时间和金钱
Q #3) 为什么要选择 Selenium 作为测试工具?
selenium
- 是一个免费和开源的
- 拥有庞大的用户群和帮助社区
- 具有跨浏览器兼容性(Firefox、Chrome、Internet Explorer、Safari 等)
- 具有良好的平台兼容性(Windows、Mac OS、Linux 等)
- 支持多种编程语言(Java、C#、Ruby、Python、Pearl 等)
- 有新的和定期的存储库开发
- 支持分布式测试
Q #4) 什么是硒?有哪些不同的 Selenium 组件?
Selenium 是最受欢迎的自动化测试套件之一。Selenium 旨在支持和鼓励基于 Web 的应用程序以及各种浏览器和平台的功能方面的自动化测试。由于它在开源社区中的存在,它已成为测试专业人员中最被接受的工具之一。
Selenium 不仅仅是一个工具或实用程序,而是多个测试工具的包,出于同样的原因,它被称为套件。这些工具中的每一个都旨在满足不同的测试和测试环境要求。
套件包构成以下工具集:
- Selenium 集成开发环境 (IDE) – Selenium IDE 是一种记录和回放工具。它作为 Firefox 插件分发。
- Selenium Remote Control (RC) – Selenium RC 是一个服务器,允许用户以所需的编程语言创建测试脚本。它还允许在大量浏览器中执行测试脚本。
- Selenium WebDriver – WebDriver 是一个完全不同的工具,与 Selenium RC 相比具有多种优势。WebDriver 直接与 Web 浏览器通信,并使用其原生兼容性进行自动化。
- Selenium Grid – Selenium Grid 用于同时在多个平台和环境上分发您的测试执行。
Q #5) Selenium 可以支持哪些测试类型?
Selenium 支持以下类型的测试:
- 功能测试
- 回归测试
Q #6) Selenium 的局限性是什么?
以下是 Selenium 的限制:
- Selenium 仅支持测试基于 Web 的应用程序
- 无法使用 Selenium 测试移动应用程序
- 验证码和条形码阅读器无法使用 Selenium 进行测试
- 报告只能使用第三方工具(如 TestNG 或 JUnit)生成。
- 由于 Selenium 是一个免费工具,因此没有现成的供应商支持,用户可以通过许多帮助社区找到。
- 用户应具备事先的编程语言知识。
Q #7) Selenium IDE、Selenium RC 和 WebDriver 之间有什么区别?
特征 | 硒IDE | 硒RC | 网络驱动程序 |
---|---|---|---|
浏览器兼容性 | Selenium IDE 是一个 Firefox 插件,因此它只支持 Firefox | Selenium RC 支持各种版本的 Mozilla Firefox、Google Chrome、Internet Explorer 和 Opera。 | WebDriver 支持各种版本的 Mozilla Firefox、Google Chrome、Internet Explorer 和 Opera。 还支持 HtmlUnitDriver,这是一个无 GUI 或无头浏览器。 |
录制和回放 | Selenium IDE 支持录制和回放功能 | Selenium RC 不支持录制和播放功能。 | WebDriver 不支持录制和回放功能 |
服务器要求 | Selenium IDE 在执行测试脚本之前不需要启动任何服务器 | Selenium RC 要求在执行测试脚本之前启动服务器。 | WebDriver 在执行测试脚本之前不需要启动任何服务器 |
框架 | Selenium IDE 是一个基于 Javascript 的框架 | Selenium RC 是一个基于 JavaScript 的框架。 | WebDriver 使用浏览器对自动化的本机兼容性 |
面向对象 | Selenium IDE 不是面向对象的工具 | Selenium RC 是半面向对象的工具。 | WebDriver 是一个纯面向对象的工具 |
动态 查找器(用于在网页上定位 Web 元素) | Selenium IDE 不支持动态查找器 | Selenium RC 不支持动态查找器。 | WebDriver 支持动态查找器 |
处理警报、导航、下拉菜单 | Selenium IDE 没有明确提供处理警报、导航、下拉菜单的帮助 | Selenium RC 没有明确提供帮助来处理警报、导航、下拉菜单。 | WebDriver 提供了广泛的实用程序和类,有助于高效地处理警报、导航和下拉列表。 |
WAP (iPhone/Android) 测试 | Selenium IDE 不支持测试 iPhone/Andriod 应用程序 | Selenium RC 不支持测试 iPhone/Android 应用程序。 | WebDriver 旨在有效支持 iPhone/Android 应用程序的测试。该工具带有大量用于基于 WAP 的测试的驱动程序。 例如,AndroidDriver、iPhoneDriver |
监听支持 | Selenium IDE 不支持监听器 | Selenium RC 不支持监听器。 | WebDriver 支持 Listeners 的实现 |
速度 | Selenium IDE 速度很快,因为它插入了启动测试的网络浏览器。因此,IDE 和浏览器直接通信 | Selenium RC 比 WebDriver 慢,因为它不直接与浏览器通信;相反,它将 selenese 命令发送到 Selenium Core,后者又与浏览器进行通信。 | WebDriver 直接与网络浏览器通信。从而使它更快。 |
Q #8) 我应该什么时候使用 Selenium IDE?
Selenium IDE 是 Selenium 包中所有工具中最简单和最简单的。它的记录和回放功能使得它非常容易学习,几乎不熟悉任何编程语言。Selenium IDE 是初级用户的理想工具。
Q #9) 什么是Selenese?
Selenese 是用于在 Selenium IDE 中编写测试脚本的语言。
Q #10) Selenium 中有哪些不同类型的定位器?
定位器可以称为在网页内唯一标识网络元素的地址。因此,为了准确和准确地识别 Web 元素,我们在 Selenium 中有不同类型的定位器:
- ID
- ClassName
- Name
- TagName
- LinkText
- PartialLinkText
- Xpath
- CSS Selector
- DOM
Q #11) assert 和 verify 命令之间有什么区别?
断言:断言命令检查给定条件是真还是假。假设我们断言给定元素是否存在于网页上。如果条件为真,则程序控制将执行下一个测试步骤,但如果条件为假,则执行将停止并且不会执行进一步的测试。
验证:验证命令还会检查给定的条件是真还是假。无论条件为真还是假,程序执行都不会停止,即验证期间的任何失败都不会停止执行,并且将执行所有测试步骤。
Q #12) 什么是 XPath?
XPath用于根据其 XML 路径定位 Web 元素。XML 代表可扩展标记语言,用于存储、组织和传输任意数据。它将数据存储在非常类似于 HTML 标签的键值对中。两者都是标记语言,并且由于它们属于同一保护伞,因此 XPath 可用于定位 HTML 元素。
使用 XPath 定位元素的基本原理是在整个页面的各种元素之间进行遍历,从而使用户能够通过另一个元素的引用来查找元素。
Q #13) Xpath 中的“/”和“//”有什么区别?
单斜杠“/” –单斜杠用于创建具有绝对路径的 Xpath,即创建 xpath 以从文档节点/起始节点开始选择。
双斜线“//” –双斜线用于创建具有相对路径的 Xpath,即创建 xpath 以从文档中的任何位置开始选择。**
**
Q #14) 什么是同源策略以及如何处理?
同源策略的问题不允许从与我们试图访问文档的源不同的源访问文档的 DOM。
来源是 URL 的方案、主机和端口的顺序组合。例如,对于一个 URL https://www.softwaretestinghelp.com/resources/,其来源是 http、softwaretestinghelp.com、80 的组合。
因此,Selenium 核心(JavaScript 程序)无法访问来自与其启动位置不同的源的元素。例如,如果我从“https://www.softwaretestinghelp.com”启动了 JavaScript 程序,那么我将能够访问同一域中的页面,例如“https://www.softwaretestinghelp.com/resources ”或“https://www.softwaretestinghelp.com/istqb-free-updates/”。其他域(如 google.com、seleniumhq.org)将无法访问。
因此,为了处理同源策略,引入了Selenium Remote Control。**
**
Q #15) 我什么时候应该使用 Selenium Grid?
Selenium Grid 可用于在多个平台和浏览器上同时执行相同或不同的测试脚本,从而实现分布式测试执行,在不同环境下进行测试,显着节省执行时间。
Q #16) Selenium 1 和 Selenium 2 是什么意思?
Selenium RC 和 WebDriver 结合使用,通常称为 Selenium 2。 Selenium RC 单独也称为 Selenium 1。**
**
Q #17) 哪个是最新的 Selenium 工具?
WebDriver
Q #18) 如何使用 WebDriver 启动浏览器?
以下语法可用于启动浏览器:
WebDriver driver = *new* FirefoxDriver();
WebDriver driver = new* ChromeDriver();
WebDriver driver = new* InternetExplorerDriver();
**
Q #19) WebDriver 中有哪些不同类型的驱动程序可用?
WebDriver 中可用的不同驱动程序是:
- 火狐驱动程序
- Internet Explorer 驱动程序
- 浏览器驱动程序
- Safari驱动程序
- OperaDriver
- 驱动程序
- 安卓驱动
- iPhone驱动程序
- Html 单元驱动程序
Q #20) WebDriver 中有哪些不同类型的等待可用?
WebDriver 中有两种类型的等待:
- 隐式等待
- 显式等待
隐式等待:隐式等待用于在整个测试脚本的每个连续测试步骤/命令之间提供默认等待时间(例如 30 秒)。因此,仅在执行前一个测试步骤/命令后 30 秒过去后,才会执行后续测试步骤。
显式等待:显式等待用于暂停执行,直到满足特定条件或经过最长时间。与隐式等待不同,显式等待仅适用于特定实例。
Q #21) 如何使用 Selenium 在文本框中输入?
用户可以使用 sendKeys("String to be enter") 在文本框中输入字符串。
语法:
WebElement username = drv .findElement(By.id( “Email” ));
// 输入用户名
username.sendKeys( “sth” );
Q #22) 你怎么能找到一个元素是否显示在屏幕上?
WebDriver 通过以下方法方便用户检查 Web 元素的可见性。这些 Web 元素可以是按钮、下拉框、复选框、单选按钮、标签等。
- isDisplayed()
- isSelected()
- **isEnabled()
句法:
isDisplayed():
*boolean* buttonPresence = driver.findElement(By.id( “gbqfba” )).isDisplayed();
isSelected():
boolean* buttonSelected = driver.findElement(By.id( “gbqfba” )).isSelected();*
**
isEnabled():
boolean* searchIconEnabled = driver.findElement(By.id( “gbqfb” )).isEnabled();*
**
Q #23) 我们怎样才能得到一个网页元素的文本?
Get 命令用于检索指定网页元素的内部文本。该命令不需要任何参数,但返回一个字符串值。它也是用于验证网页上显示的消息、标签、错误等的广泛使用的命令之一。
语法:
String Text = driver.findElement(By.id(“Text”)).getText();
Q #24) 如何在下拉列表中选择值?
下拉列表中的值可以使用 WebDriver 的 Select 类来选择。
句法:
selectByValue:
Select selectByValue = *new* Select( driver .findElement(By.id( “SelectID_One” )));
selectByValue.selectByValue( “greenvalue” );
selectByVisibleText:
Select selectByVisibleText = *new* Select ( driver .findElement(By.id( “SelectID_Two” )));
selectByVisibleText.selectByVisibleText( “石灰” );
selectByIndex:
Select selectByIndex = new* Select( driver .findElement(By.id( “SelectID_Three” )));
selectByIndex.selectByIndex(2);*
**
Q #25) 有哪些不同类型的导航命令?
以下是导航命令:
navigate().back() – 上述命令不需要参数,可将用户带回到 Web 浏览器历史记录中的上一个网页。
示例代码:
driver.navigate().back();
navigate().forward() – 此命令让用户可以参考浏览器的历史记录导航到下一个网页。
示例代码:
driver.navigate().forward();
navigate().refresh() – 该命令允许用户通过重新加载所有网页元素来刷新当前网页。
示例代码:
driver.navigate().refresh();
navigate().to() – 此命令允许用户启动新的 Web 浏览器窗口并导航到指定的 URL。
示例代码:
driver.navigate().to(“https://google.com”);
Q #26) 如何使用linkText点击超链接?***
***
驱动程序**.findElement(By.linkText( “Google” )).click();
该命令使用链接文本查找元素,然后单击该元素,因此用户将被重定向到相应的页面。
也可以使用以下命令访问上述链接。
驱动程序**.findElement(By.partialLinkText( “Goo” )).click();
上面的命令根据括号中提供的链接的子字符串查找元素,因此 partialLinkText() 查找具有指定子字符串的 web 元素,然后单击它。
Q #27) 如何在 WebDriver 中处理框架?
内联框架首字母缩略词 iframe 用于在当前 HTML 文档中插入另一个文档,或者通过启用嵌套将网页插入网页。
通过id
驱动选择iframe .switchTo().frame( “框架的ID ” );
使用 tagName 定位 iframe
driver.switchTo().frame(driver.findElements(By.tagName(“iframe”).get(0));
使用索引定位 iframe
frame(index)
driver.switchTo().frame(0);
框架(框架名称)
driver.switchTo().frame(“框架名称”);
frame(WebElement element)
选择父窗口
driver.switchTo().defaultContent();
Q #28) 我们什么时候使用 findElement() 和 findElements()?
findElement(): findElement() 用于查找当前网页中与指定定位符值匹配的第一个元素。请注意,只会获取第一个匹配元素。**
**
句法:
WebElement element = driver .findElements(By.xpath( “//div[@id='example']//ul//li” ));
findElements(): findElements() 用于查找当前网页中与指定定位器值匹配的所有元素。请注意,所有匹配的元素都将被提取并存储在 WebElements 列表中。
语法:
List
**
Q #29) 如何在列表中找到多个网页元素?
有时,我们可能会遇到相同类型的元素,例如排列在有序或无序列表中的多个超链接、图像等。因此,通过一段代码处理这些元素是绝对有意义的,这可以使用 WebElement List 来完成。
示例代码
// Storing the list``List <WebElement> elementList = driver.findElements(By.xpath(``"//div[@id='example']//ul//li"``));``// Fetching the size of the list``int` `listSize = elementList.size();``for` `(``int` `i=``0``; i<listSize; i++)``{``// Clicking on each service provider link``serviceProviderLinks.get(i).click();``// Navigating back to the previous page that stores link to service providers``driver.navigate().back();``}
Q #30) driver.close() 和 driver.quit 命令有什么区别?
close():WebDriver 的 close() 方法关闭用户当前正在处理的 Web 浏览器窗口,或者我们也可以说 WebDriver 当前正在访问的窗口。该命令既不需要任何参数也不返回任何值。
quit():与 close() 方法不同,quit() 方法关闭程序打开的所有窗口。与 close() 方法相同,该命令不需要任何参数,也不返回任何值。
Q #31) Selenium 可以处理基于窗口的弹出窗口吗?
Selenium 是一种自动化测试工具,仅支持 Web 应用程序测试。因此,无法使用 Selenium 处理弹出的窗口。
Q #32) 我们如何处理基于 Web 的弹出窗口?
WebDriver 为用户提供了一种非常有效的方式来使用 Alert interface 处理这些弹出窗口。我们将与 Alert 接口一起使用四种方法。
- void dismiss() – 弹出窗口一出现,dismiss() 方法就会点击“取消”按钮。
- void accept() – 弹出窗口出现后,accept() 方法会立即单击“确定”按钮。
- String getText() – getText() 方法返回显示在警报框中的文本。
- void sendKeys(String stringToSend) – sendKeys() 方法将指定的字符串模式输入到警报框中。
语法:
// 接受 javascript 警报
Alert alert = driver.switchTo().alert();
警报。接受();
Q #33) 我们如何处理基于窗口的弹出窗口?
Selenium 是一个自动化测试工具,它只支持 web 应用程序测试,也就是说,它不支持基于 windows 的应用程序测试。然而Selenium本身并不能帮助这种情况,但通过一些第三方工具。有几个第三方工具可用于处理基于窗口的弹出窗口以及Selenium,如 AutoIT、Robot 类等。
Q #34) 如何断言网页的标题?
//验证网页
标题 assertTrue(“窗口标题不正确。”,driver.getTitle().equals(“页面标题”));
Q #35) 如何使用 WebDriver 将鼠标悬停在 Web 元素上?
WebDriver 提供了广泛的交互实用程序,用户可以利用这些实用程序来自动化鼠标和键盘事件。操作界面就是一种模拟单用户交互的实用程序。
因此,在以下场景中,我们使用操作界面将鼠标悬停在下拉菜单上,然后打开一个选项列表。
示例代码:
// Instantiating Action Interface``Actions actions=``new` `Actions(driver);``// howering on the dropdown``actions.moveToElement(driver.findElement(By.id(``"id of the dropdown"``))).perform();``// Clicking on one of the items in the list options``WebElement subLinkOption=driver.findElement(By.id(``"id of the sub link"``));``subLinkOption.click();
Q #36) 如何检索元素的 CSS 属性?
可以使用 get() 方法检索 css 属性的值:
语法:
driver.findElement(By.id( “id ”)).getCssValue( “css属性名称” );
driver.findElement(By.id( “id ”)).getCssValue( “font-size” );
**Q #37) 如何在 WebDriver 中截取屏幕截图?
**
import` `org.junit.After;``import` `org.junit.Before;``import` `org.junit.Test;``import` `java.io.File;``import` `java.io.IOException;``import` `org.apache.commons.io.FileUtils;``import` `org.openqa.selenium.OutputType;``import` `org.openqa.selenium.TakesScreenshot;``import` `org.openqa.selenium.WebDriver;``import` `org.openqa.selenium.firefox.FirefoxDriver;` `public` `class` `CaptureScreenshot {``WebDriver driver;``@Before``public` `void` `setUp() ``throws` `Exception {``driver = ``new` `FirefoxDriver();``driver.get(``"https://google.com"``);``}``@After``public` `void` `tearDown() ``throws` `Exception {``driver.quit();``}` `@Test``public` `void` `test() ``throws` `IOException {``// Code to capture the screenshot``File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);``// Code to copy the screenshot in the desired location``FileUtils.copyFile(scrFile, ``new` `File(``"C:\CaptureScreenshot\google.jpg"``))``}``}
问 #38)****什么是 Junit?
Junit是 Apache 推出的单元测试框架。Junit 基于 Java。
问 #39) 什么是 Junit 注释?
以下是 JUnit 注释:
- @Test:注解让系统知道被注解为@Test 的方法是一个测试方法。一个测试脚本中可以有多个测试方法。
- @Before:方法注解为@Before 让系统知道这个方法应该在每次测试方法之前执行。
- @After:方法注解为@After 让系统知道这个方法应该在每次测试方法之后执行。
- @BeforeClass:注释为@BeforeClass 的方法让系统知道这个方法应该在任何测试方法之前执行一次。
- @AfterClass:注释为@AfterClass 的方法让系统知道该方法应在任何测试方法之后执行一次。
- @Ignore:注释为@Ignore 的方法让系统知道不应执行此方法。
Q #40) 什么是 TestNG,它比 Junit 好在哪里?
TestNG是一种高级框架,旨在利用开发人员和测试人员的优势。随着这些框架的推出,JUnit 在 Java 应用程序、Java 开发人员和 Java 测试人员中获得了极大的欢迎,并显着提高了代码质量。尽管易于使用且简单明了,但 JUnit 有其自身的局限性,因此需要将 TestNG 纳入其中。TestNG 是一个开源框架,在 Apache 软件许可下分发,可以随时下载。
带有 WebDriver 的 TestNG 提供了一种高效且有效的测试结果格式,反过来,可以与利益相关者共享以了解产品/应用程序的健康状况,从而消除 WebDriver 无法生成测试报告的缺点。TestNG 有一个内置的异常处理机制,可以让程序运行而不会意外终止。**
**
有多种优势使 TestNG 优于 JUnit。他们之中有一些是:
- 添加了高级和简单的注释
- 执行模式可以设置
- 测试脚本的并发执行
- 可以设置测试用例依赖
Q #41) 如何在 TestNG 中设置测试用例优先级?
**在 TestNG 中设置优先级
**
代码片段
package TestNG;
import org.testng.annotations.*;
public class SettingPriority {
@Test(priority=0)
public void method1() {
}
@Test(priority=1)
public void method2() {
}
@Test(priority=2)
public void method3() {
}
}
测试执行顺序:
- 方法一
- 方法二
- 方法三
问 #42)****什么是框架?
该框架是各种指南、编码标准、概念、流程、实践、项目层次结构、模块化、报告机制、测试数据注入等的建设性混合,以支持自动化测试。
Q #43) 自动化框架的优点是什么?
测试自动化框架的优势
- 代码的可重用性
- 最大覆盖范围
- 恢复场景
- 低成本维护
- 最少的人工干预
- 轻松报告
Q #44) 有哪些不同类型的框架?
以下是不同类型的框架:
- 基于模块的测试框架:该框架将整个“被测应用程序”划分为多个逻辑模块和隔离模块。对于每个模块,我们创建一个单独且独立的测试脚本。因此,当这些测试脚本组合在一起时,会构建一个更大的测试脚本,代表多个模块。
- 库架构测试框架:框架背后的基本原理是确定常见步骤并将它们分组到库下的函数中,并在需要时在测试脚本中调用这些函数。
- 数据驱动测试框架:数据驱动测试框架帮助用户将测试脚本逻辑和测试数据相互隔离。它允许用户将测试数据存储到外部数据库中。数据通常存储在“键值”对中。因此,密钥可用于访问和填充测试脚本中的数据。
- 关键字驱动测试框架:关键字驱动测试框架是数据驱动测试框架的扩展,它不仅将测试数据与脚本隔离,还将属于测试脚本的特定代码集保留到外部数据文件。
- 混合测试框架:混合测试框架是上述框架的组合。这种设置的最佳之处在于它利用了各种相关框架的优势。
- 行为驱动开发框架:行为驱动开发框架允许业务分析师、开发人员、测试人员等以易于阅读和理解的格式自动进行功能验证。
Q #45) 如何从 excel 中读取测试数据?
可以使用 JXL 或 POI API 从 excel 高效读取测试数据。请参阅此处的详细教程。
Q #46) POI 和 jxl jar 有什么区别?
# | JXL jar | POI jar |
---|---|---|
1 | JXL 支持“.xls”格式,即基于二进制的格式。JXL 不支持 Excel 2007 和“.xlsx”格式,即基于 XML 的格式 | POI jar 支持所有这些格式 |
2 | JXL API 上次更新是在 2009 年 | POI定期更新发布 |
3 | JXL 文档不如 POI 文档全面 | POI 有一个准备充分且高度全面的文档 |
4 | JXL API 不支持富文本格式 | POI API 支持富文本格式 |
5 | JXL API 比 POI API 更快 | POI API 比 JXL API 慢 |
Q #47) Selenium 和 QTP 有什么区别?
特征 | 硒 | 快速测试专家 (QTP) |
---|---|---|
浏览器兼容性 | Selenium 支持几乎所有流行的浏览器,如 Firefox、Chrome、Safari、Internet Explorer、Opera 等 | QTP 支持 Internet Explorer、Firefox 和 Chrome。QTP 仅支持 Windows 操作系统 |
分配 | Selenium 作为开源工具分发,可免费使用 | QTP 作为许可工具分发并商业化 |
测试中的应用程序 | Selenium 仅支持测试基于 Web 的应用程序 | QTP 支持测试基于 web 的应用程序和基于 windows 的应用程序 |
对象库 | 需要将对象存储库创建为单独的实体 | QTP 自动创建和维护 Object Repository |
语言支持 | Selenium 支持多种编程语言,如 Java、C#、Ruby、Python、Perl 等 | QTP 仅支持 VB 脚本 |
供应商支持 | 由于 Selenium 是一个免费工具,用户在解决问题时不会得到供应商的支持 | 如果出现任何问题,用户可以轻松获得供应商的支持 |
Q #48) WebDriver 可以测试移动应用程序吗?
WebDriver 无法测试移动应用程序。WebDriver 是一个基于 Web 的测试工具,因此可以测试移动浏览器上的应用程序。
Q #49) 验证码可以自动化吗?
不,验证码和条形码阅读器不能自动化。
问 #50) 什么是对象存储库?我们如何在 Selenium 中创建对象存储库?
对象存储库是一个术语,用于指代属于被测应用程序 (AUT) 的 Web 元素及其定位符值的集合。因此,只要脚本中需要元素,就可以从对象存储库中填充定位器值。Object Repository 用于将定位器存储在一个集中位置,而不是在脚本中对其进行硬编码。
在 Selenium 中,对象可以存储在 excel 表中,该表可以在需要时填充到脚本中。
目前为止就这样了。
希望在本文中您能找到最常见的 Selenium 和 WebDriver 面试问题的答案。此处提供的答案也有助于理解 Selenium 基础知识和高级 WebDriver 主题。