收藏 分享(赏)

Selenium自动化测试用例设计注意事项.doc

上传人:精品资料 文档编号:9650587 上传时间:2019-08-20 格式:DOC 页数:12 大小:37.43KB
下载 相关 举报
Selenium自动化测试用例设计注意事项.doc_第1页
第1页 / 共12页
Selenium自动化测试用例设计注意事项.doc_第2页
第2页 / 共12页
Selenium自动化测试用例设计注意事项.doc_第3页
第3页 / 共12页
Selenium自动化测试用例设计注意事项.doc_第4页
第4页 / 共12页
Selenium自动化测试用例设计注意事项.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、Selenium 自动化测试用例设计注意事项 UI 元素映射 元素验证 等待加载 日志记录 结果收集Selenium 自动化测试用例设计注意事项(一) 自动化测试设计简介我们在本章提供的信息,对自动化测试领域的新人和经验丰富的老手都是有用的。本篇中描述最常见的自动化测试类型, 还描述了可以增强您的自动化测试套件可维护性和扩展性的“设计模式” 。还没有使用这些技术的、有经验的自动化测试工程师会对这些技术更加感兴趣。测试类型您应该测试应用程序中的哪些部分?这取决于您的项目的各种影响因素:用户的期望,时间期限,项目经理设置的优先事项等等。但是,一旦项目边界定义完成,作为测试工程师,你必须做出要测试什

2、么的决定。为了对 Web 应用的测试类型进行分类,我们在这里创建了一些术语。这些术语并不意味着标准,但是这些概念对 web 应用测试来说非常典型。 测试静态内容静态内容测试是最简单的测试,用于验证静态的、不变化的 UI 元素的存在性。例如: 每个页面都有其预期的页面标题?这可以用来验证链接指向一个预期的页面。 应用程序的主页包含一个应该在页面顶部的图片吗? 网站的每一个页面是否都包含一个页脚区域来显示公司的联系方式,隐私政策,以及商标信息? 每一页的标题文本都使用的标签吗?每个页面有正确的头部文本内吗?您可能需要或也可能不需要对页面内容进行自动化测试。如果您的网页内容是不易受到影响手工对内容进

3、行测试就足够了。如果,例如您的应用文件的位置被移动,内容测试就非常有价值。 测试链接Web 站点的一个常见错误为的失效的链接或链接指向无效页。链接测试涉及点各个链接和验证预期的页面是否存在。如果静态链接不经常更改,手动测试就足够。但是,如果你的网页设计师经常改变链接,或者文件不时被重定向,链接测试应该实现自动化。 功能测试在您的应用程序中,需要测试应用的特定功能,需要一些类型的用户输入,并返回某种类型的结果。通常一个功能测试将涉及多个页面,一个基于表单的输入页 面,其中包含若干输入字段、提交“和” 取消“操作,以及一个或多个响应页面。用户输入可以通过文本输入域,复选框,下拉列表,或任何其他的浏

4、览器所支持的 输入。功能测试通常是需要自动化测试的最复杂的测试类型,但也通常是最重要的。典型的测试是登录,注册网站账户,用户帐户操作,帐户设置变化,复杂的数据检索操作等等。功能测试通常对应着您的应用程序的描述应用特性或设计的使用场景。 测试动态元素通常一个网页元素都有一个唯一的标识符,用于唯一地定位该网页中的元素。通常情况下,唯一标识符用 HTML 标记的id属性或name 属性来实 现。这些标识符可以是一个静态的,即不变的、字符串常量。它们也可以是动态生产值,在每个页面实例上都是变化的。例如,有些 Web 服务器可能在一个页面实 例上命名所显示的文件为 doc3861,并在其他页面实力上显示

5、为 doc6148,这取决于用户在检索的文档。验证文件是否存在的测试脚本,可能无法 找到不变的识别码来定位该文件。通常情况下,具有变化的标识符的动态元素存在于基于用户操作的结果页面上,然而,显然这取决于 Web 应用程序。下面是一个例子。这是一个 HTML 标记的复选框,其 ID (addForm:_ID74:_ID75:0:_ID79:0:checkBox) 是一个动态生成的值。这个页面下次被打开时,复选框的 ID 将可能是一个不同的值。 Ajax 的测试Ajax 是一种支持动态改变用户界面元素的技术。页面元素可以动态更改,但不需要浏览器重新载入页面,如动画,RSS 源,其他实时数据更新等等

6、。 Ajax 有不计其数的更新网页上的元素的方法。但是了解 AJAX 的最简单的方式,可以这样想,在 Ajax 驱动的应用程序中,数据可以从应用服务器检索,然 后显示在页面上,而不需重新加载整个页面。只有一小部分的页面,或者只有元素本身被重新加载。验证结果 断言 assert 与验证 verify什么时候使用断言命令,什么时候使用验证命令?这取决于你。差别在于在检查失败时,你想让测试程序做什么。你想让测试终止,还是想继续而只简单地记录检查失败?这需要权衡。如果您使用的断言,测试将在检查失败时停止,并不运行任何后续的检查。有时候,也许是经常的,这是你想要的。如果测试失败,你会立刻知道测 试没有通

7、过。TestNG 和 JUnit 等测试引擎提供在开发测试脚本时常用的插件,可以方便地标记那些测试为失败的测试。优点:你可以直截了当地看到检查 是否通过。缺点:当检查失败,后续的检查不会被执行,无法收集那些检查的结果状态。相比之下,验证命令将不会终止测试。如果您的测试只使用验证,可以得到保证是假设没有意外的异常测试会被执行完毕,而不管是否发现缺陷。缺点:你必 须做更多的工作,以检查您的测试结果。也就是说,你不会从 TestNG 和 JUnit 得到反馈。您将需要在打印输出控制台或日志文件中查看结果。每次运行测 试,你都需要花时间去查看结果输出。如果您运行的是数以百计的测试,每个都有它自己的日志

8、,这将耗费时间。及时得到反馈会更合适,因此断言通常比验证更常 使用。 权衡:assertTextPresent,assertElementPresent 和 assertText您现在应该熟悉这些命令及使用它们的机制。如果没有,请参阅相关章节。在构建你的测试时,你需要决定 只检查在页面上的文本吗?(verify/ assertTextPresent) 只检查是否在页面上存在 HTML 元素吗?即文本,图像,或其他没被检查的内容,只要和 HTML标记相关。(verify/ assertElementPresent) 需要同时检查元素和它的文本内容?(verify/ assertText)没有正确

9、的答案。这取决于您的测试要求。如有疑问,请使用 assertText,因为这是最严格的类型检查点。您可以随后更改它,但至少你不会遗漏任何潜在的故障。Verify/ assertText 是最特殊的测试类型。 HTML 元素(标签)或文本的不符合都会导致测试失败。也许你的网页设计师经常改变页面面,而你不希望在他们改 变页面时,你的测试失败,因为这是期望中的周期性变更。但是,假如你仍然需要检查的页面上的东西,如段落、标题文本或图像。在这种情况下,您可以使用 verify/ assertElementPresent。这将确保一个特定类型的元素存在(如果使用 XPath,可以确保它相对页面内其他对象的

10、存在)。但你不关心的 内容是什么,你只关心某个特定的元素,比方说,一个图片在一个特定的位置。随着时间的推移和经验的积累,如何决定使用还是非常简单的。定位元素的策略 选择一个定位策略有多种方式选择页面上的对象。但面对这些定位类型,如何权衡呢?回想一下,我们定位一个对象的方式: 元素的 ID 元素的 name 属性 XPath 语句 通过一个链接的文本 文档对象模型(DOM )使用元素的 ID 或 name 定位符,在测试执行方面来说,是最有效的方式。也让你的测试代码更具可读性,如果在页面源代码中的 ID 或 name 属性被友好命 名的话。XPath 语句需要更长的时间来处理,因为浏览器必须运行

11、它的 XPath 处理器。在 Internet Explorer 7,XPath 出了名的慢。使用链接的文本进行定位是很方便的,并运行起来也不错。这种技术只适用于链接。另外,如果链接文本很可能会经常改变,使用标签定位元素将是更好的选择。不过,有时你必须使用 XPath 定位。如果一个页面元素没有一个 ID 或者 name 属性,除了 XPath 定位没得选择。(DOM 定位器不再普遍使用,因为, XPath 可以做得更好。 DOM 定位器只简单地为遗留测试而存在)。相对使用 ID 或 name 属性定位,使用 XPath 进行定位有一个独特的优势。使用 XPath(DOM)中,你可以找到页面上

12、相对于其他对象的一个对象。 例如,如果有一个链接必须存在标签里的第二个段落内,您可以使用 XPath 进行定位。使用 ID 和 name 属性定位,你只能得出它们 存在指定的页面,而不知具体的页面位置。如果你必须测试显示公司标志的图像出现在页面顶部的头部分,XPath 定位可能是更好的选择。 定位动态元素正如前面测试类型部分所述,动态元素的页面标识在不同的页面实例上市不同的。例如,View Archived Allocation Events这个 HTML 锚标记定义了一个 ID 属性为“adminHomeForm”按钮。和大部分 HTML 标签相比,这是一个相当复杂的锚标记,但它仍然是一个静

13、态 标签。每次页面被浏览器加载时,HTML 将保持不变。它的 ID在所有的页面实例里保持不变,也就是说,页面被展示时,这个 UI 元素总是有同样的标识符。所 以,点击此按钮的测试脚本(Selenium Server)如下所示:selenium.click(“adminHomeForm“);然而,你的应用程序,可能生成动态的 HTML 标识符。在不同的网页实例中,标识符发生改变。例如,一个动态的页面的 HTML 元素可能会是这个样子:这是一个复选框,id 和 name 属性都是 addForm:_ID74:_ID75:0:_ID79:0:checkBox。在这种情况下,使用标准的定位,测试脚本应

14、该是这样子的:selenium.click(“addForm:_ID74:_ID75:0:_ID79:0:checkBox“);对于动态生成的标识符,这种做法行不通。下一次页面加载时,标识符将是一个不同的值,执行上述脚本会遇到“element not found”错误。要更正该问题,一个简单的解决办法是使用 XPath 定位替代 ID 定位器。因此,对于该复选框,可以简单地使用selenium.click(“/input“);或者,如果它不是在页面上的第一个文本输入域,尝试一个更详细的 XPath 语句。selenium.click(“/input3“);或selenium.click(“/d

15、iv/p2/input3“);但是,如果你确实需要使用 ID 来定位元素,可以换一种不同的解决方案。您可以先捕捉到网站的这个 ID,然后再使用它,例如:String checkboxids = selenium.getAllFields(); / Collect all input IDs on page.for(String checkboxid:checkboxids) if(checkboxid.contains(“addForm“) selenium.click(expectedText);如果页面上只有一个复选框的 ID 文本为“expectedText” 时,这种方法工作。 定位

16、Ajax 元素定位、验证 AJAX 元素的最好的方式是使用 Selenium 2.0 webdriver 的 API,它专门解决 Selenium 1.0测试 AJAX 元素的一些限制。在 Selenim 2.0 中,可以使用 waitfor()方法来等待一个页面元素变得可用。该参数是一个 WebDriver 用来实现定位的 By 对象。这是 WebDriver 的章节中详细解释。在 Selenium 1.0(Selenium-RC 的)中,要做到这一点需要编写更多的编码,但它并不难。首先检查元素,如果它存在,等待预定义的时间段,然后再重新检查。这在循环内执行,如果超过一个预定的超时,元素不存

17、在则终止循环。让我们考虑页面上实现 AJAX 效果的一个链接(链接= ajaxLink),可以使用循环处理:/ Loop initialization.for (int second = 0; second+) / If loop is reached 60 seconds then break the loop.if (second = 60) break;/ Search for element “link=ajaxLink“ and if available then break loop.try if (selenium.isElementPresent(“link=ajaxLink“

18、) break; catch (Exception e) / Pause for 1 second.Thread.sleep(1000);这当然不是唯一的解决办法。Ajax 是一个共同的话题,在用户论坛上,查找一下之前的讨论,看看别人是如何做的。封装 Selenium 调用与任何编程一样,你需要使用工具函数来处理在测试代码中重复的函数。避免重复的方法之一是封装常用的 Selenium 方法的调用。例如,测试时经常点击页面上的元素,等待页面加载。selenium.click(elementLocator);selenium.waitForPageToLoad(waitPeriod);为了不重复上

19、述代码,你可以写一个包装方法实现这两个功能。/* Clicks and Waits for page to load.* param elementLocator* param waitPeriod*/public void clickAndWait(String elementLocator, String waitPeriod) selenium.click(elementLocator);selenium.waitForPageToLoad(waitPeriod); 判断元素存在的 “安全操作”另一种常见的封装 Selenium 的方法,在执行进一步操作前检查页面上的元素存在性。这有时被

20、称为 “安全操作”。例如,下面的方法可用于实现一个依赖期望的元素存在的安全操作。/* Selenum-RC - Clicks on element only if it is available on page.* param elementLocator*/public void safeClick(String elementLocator) if(selenium.isElementPresent(elementLocator) selenium.click(elementLocator); else / Using the TestNG API for loggingReporter.

21、log(“Element: “ +elementLocator+ “, is not available on page - “+selenium.getLocation();上述例子使用的是 Selenium 1.0 API,Selenium 2.0 同样支持安全操作。/* Selenium-WebDriver - Clicks on element only if it is available on page.* param elementLocator*/public void safeClick(String elementLocator) WebElement webElement

22、 = getDriver().findElement(By.XXXX(elementLocator);if(webElement != null) selenium.click(elementLocator); else / Using the TestNG API for loggingReporter.log(“Element: “ +elementLocator+ “, is not available on page - “+ getDriver().getUrl();在第二个例子中,XXXX方法是一个占位符,可以用元素定位方法进行替换。使用安全方法取决于测试开发人员的决定。因此,如果

23、测试需要继续执行,即使知道页面上一些元素没有发现,这时可以使用安全方法,并发送一条缺少元素的消 息到日志文件。这基本上等于实现了带报告机制的验证,而不是一个失败就终止执行的断言。但是,如果元素必须在页面上出现,以便能够执行进一步的操作(如一 个门户网站主页上的登录按钮),这时安全方法技术不应该被使用。Selenium 自动化测试用例设计注意事项(二) UI 映射一个 UI 映射是一种机制,它存储所有的定位器的测试套件在一个地方,方便修改 UI 元素的路径标识符或改变在 AUT。测试脚本,然后使用 UI 地图定位以被测试的元件。基本上,UI 地图是一个存储库的测试脚本对象,对应于被测试的应用程序

24、的 UI 元素。是什么让一个 UI 地图有帮助吗?其主要目的是测试脚本的管理更加容易。当定位需要编辑,有一个中央位置轻松地找到对象,而不是通过搜索测试脚本代码。此外,它允许改变的标识符在一个地方,而不是在多个地方,以使更改在测试脚本,或为此事,在多个测试脚本。总之,一个 UI 地图有两个显着的优点。 UI 对象使用一个集中的位置,而不是让他们分散在整个脚本。这使得脚本维护更高效。 神秘的 HTML 标识符和名称可以被赋予了更多的人类可读的名字,提高测试脚本的可读性。考虑下面很难理解的测试代码(Java 语言)。public void testNew() throws Exception sel

25、enium.open(http:/);selenium.type(“loginForm:tbUsername“, “xxxxxxxx“);selenium.click(“loginForm:btnLogin“);selenium.click(“adminHomeForm:_activitynew“);selenium.waitForPageToLoad(“30000“);selenium.click(“addEditEventForm:_IDcancel“);selenium.waitForPageToLoad(“30000“);selenium.click(“adminHomeForm:_a

26、ctivityold“);selenium.waitForPageToLoad(“30000“);该代码很难被那些不熟悉待测应用(AUT)页面源代码的人理解。即使是待测应用的固定用户可能也很难理解这段脚本代码的作用。一个更好的脚本可能是:public void testNew() throws Exception selenium.open(http:/);selenium.type(admin.username, “xxxxxxxx“);selenium.click(admin.loginbutton);selenium.click(admin.events.createnewevent);

27、selenium.waitForPageToLoad(“30000“);selenium.click(admin.events.cancel);selenium.waitForPageToLoad(“30000“);selenium.click(admin.events.viewoldevents);selenium.waitForPageToLoad(“30000“);使用备注和空格换行、再加上 UI 映射标识,下面的代码更加易读:public void testNew() throws Exception / Open app url.selenium.open(http:/);/ Pro

28、vide admin username.selenium.type(admin.username, “xxxxxxxx“);/ Click on Login button.selenium.click(admin.loginbutton);/ Click on Create New Event button.selenium.click(admin.events.createnewevent);selenium.waitForPageToLoad(“30000“);/ Click on Cancel button.selenium.click(admin.events.cancel);sele

29、nium.waitForPageToLoad(“30000“);/ Click on View Old Events button.selenium.click(admin.events.viewoldevents);selenium.waitForPageToLoad(“30000“);有多种方法可以实现 UI 映射。可以创建一个类或结构体来存储字符串变量,每个变量存储一个定位信息。或者,使用一个文本文件来存储键值对。在 Java 中,一个包含键值对的属性 property 文件可能是最好的方法。考虑如下属性文件 prop.properties,为上述代码例子中的 UI 元素指定了 “别名”

30、 :admin.username = loginForm:tbUsernameadmin.loginbutton = loginForm:btnLoginadmin.events.createnewevent = adminHomeForm:_activitynewadmin.events.cancel = addEditEventForm:_IDcanceladmin.events.viewoldevents = adminHomeForm:_activityold其中定位信息还是指向页面的 HTML 对象,但我们在测试脚本和 UI 元素之间引入一层抽象层。测试类从属性文件中读取定位信息,从

31、而实现 UI 映射。页面对象设计模式页面对象设计模式,可以提高自动化测试脚本的维护性、减少代码重复,越发流行。页面对象是一个面向对象的类,作为待测应用对外提供的接口。测试代码在需要和 UI 页面交互时,使用此页面对象类的方法。这样做的好处是,如果 UI 页面发生变化,测试代码本身并不需要改变,只需要改变相应的页面对象的代码。为适应新 UI 页面的所有更改,都位于一个地方。页面对象设计模式具有以下优点:1、测试代码和页面相关的代码,比如页面元素定位信息(若使用 UI 映射,也包括定位信息的应用),页面布局等,完全分离;2、可以维护单一的储存库来存储页面提供的服务或操作,而不是把他们分散在测试代码

32、中。在这两种情况下,这使得任何由于 UI 界面变化导致的修改,都可以在一个地方进行修改。关于该技术的更多有用信息,可以在众多的博客上找到。我们也鼓励读者去阅读更多。 许多人写这样的设计模式和超出本用户指南的范围,可以提供有用的提示。不过,为了让你开始,我们将举例说明页面对象的一个简单的例子。首先,考虑一个例子,典型的自动化测试,不使用页面对象。/* Tests login feature*/public class Login public void testLogin() selenium.type(“inputBox“, “testUser“);selenium.type(“passwor

33、d“, “my supersecret password“);selenium.click(“sign-in“);selenium.waitForPageToLoad(“PageWaitPeriod“);Assert.assertTrue(selenium.isElementPresent(“compose button“),“Login was unsuccessful“);这种方法有两个问题。1、没有分离测试代码和待测应用的定位器(在这个例子中是 ID);两者都交织在一个单一方法中。如果待测应用 UI 改变了它的标识,布局,或登录输入和处理的方式变化,测试代码本身必须改变。2、ID 定位信

34、息分散在多个测试代码中,所有的测试不得不使用此登录页面。使用页面对象技术,上述测试代码可以按如下方式重写,为登录页面的页面对象例子:/* Page Object encapsulates the Sign-in page.*/public class SignInPage private Selenium selenium;public SignInPage(Selenium selenium) this.selenium = selenium;if(!selenium.getTitle().equals(“Sign in page“) throw new IllegalStateExcept

35、ion(“This is not sign in page, current page is: “+selenium.getLocation();/* Login as valid user* param userName* param password* return HomePage object*/public HomePage loginValidUser(String userName, String password) selenium.type(“usernamefield“, userName);selenium.type(“passwordfield“, password);

36、selenium.click(“sign-in“);selenium.waitForPageToLoad(“waitPeriod“);return new HomePage(selenium);主页的页面对象可能会是这个样子:/* Page Object encapsulates the Home Page*/public class HomePage private Selenium selenium;public HomePage(Selenium selenium) if (!selenium.getTitle().equals(“Home Page of logged in user“

37、) throw new IllegalStateException(“This is not Home Page of logged in user, current page“ +“is: “ +selenium.getLocation();public HomePage manageProfile() / Page encapsulation to manage profile functionalityreturn new HomePage(selenium);/*More methods offering the services represented by Home Pageof

38、Logged User. These methods in turn might return more Page Objectsfor example click on Compose mail button could return ComposeMail class object*/现在,使用上述两个页面对象的登录测试代码,如下所示。/* Tests login feature*/public class TestLogin public void testLogin() SignInPage signInPage = new SignInPage(selenium);HomePage

39、homePage = signInPage.loginValidUser(“userName“, “password“);Assert.assertTrue(selenium.isElementPresent(“compose button“),“Login was unsuccessful“);怎么样使用页面对象进行设计有很大的灵活性,但也有一些基本的规则以保证得到测试代码具有所需的可维护性。页面对象本身不应该被验证或断言。这应该是测试的一部分,并应始终在测试代码中去验证或断言,而不要放在页面对象内。页面对象将包含页面展现,方法的形式表示页面提供的服务,但不需要包含应该在测试代码中维护的代码

40、。唯一的应该存在页面对象中的验证方法是,验证页面、页面上的重要元素,被正确的加载。这这个验证应该在页面初始化时进行。在上面的例子中,SignInPage 和 HomePage 的构造函数检查了期望的页面是否可用,是否准备好接受测试代码的请求。页面对象并不一定要代表整个页面。页面对象设计模式可用于表示页面上组件。在待测应用上的一个页面若有多个组件,每个组件对应一个页面对象可以提高可维护性。在测试时,还会遇到其他的测试设计模式。有些人用一个页面工厂模式来实例化页面对象。讨论所有的这些测试模式,超出了本文档的的范围。在这里,我们只为大家介绍概念,使读者知道这些东西可以些什么。正如前面提到的,很多人都

41、在博客上讨论这个话题,我们鼓励读者搜索这些话题。数据驱动测试数据驱动测试是指相同的测试(或测试集)可以使用不同的数据多次执行。这些数据集往往来自外部文件,如 csv 文件,文本文件,或者是从数据库加载。数据驱动测试是一种常用的自动化测试技术,使用不同的输入对应用程序进行多次验证。当测试被针对不同的数据进行设计时,所输入的数据就可以扩展,基本上不需要修改测试代码就可以进行更多的测试。# Collection of String valuessource = open(“input_file.txt“, “r“)values = source.readlines()source.close()#

42、Execute For loop for each String in the values arrayfor search in values:sel.open(“/“)sel.type(“q“, search)sel.click(“btnG“)sel.waitForPageToLoad(“30000“)self.failUnless(sel.is_text_present(“Results * for “ + search)上面的 Python 代码打开一个文本文件,这个文件每行包含不同的搜索字符串。然后代码保存字符串到一个字符串数组,对数值进行遍历,使用搜索字符串进行查询,并进行断言。这

43、是一个非常简单的例子,但其中的思路表明,可以很简单的使用编程、脚本语言进行数据驱动的测试。有关更多示例,请参阅 Selenium RC wiki 来了解如何从电子表格读取数据或使用 TestNG 的提供数据。此外,这是一个在自动化测试的专业人士圈内众所周知的话题之一,包括那些不使用 Selenium 的自动化圈子,因此搜索互联网上的“数据驱动测试 ”,会得到许多关于这一主题的博客。数据库验证另一种常见的测试类型是,比较用户界面上的数据和存储在后台数据库中的数据。因为你也可以使用一种编程语言进行数据库查询,假设你有数据库相关的函数,你可以用它们来检索数据,然后使用这些数据来验证页面上所显示的数据

44、是正确的。考虑如下例子,从数据库中进行检索注册电子邮件地址,然后再和界面上的数据进行比较。代码如下,先建立一个数据库连接,并从数据库中检索数据,使用的是 Java 语言:/ Load Microsoft SQL Server JDBC driver.Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“);/ Prepare connection url.String url = “jdbc:sqlserver:/192.168.1.180:1433;DatabaseName=TEST_DB“;/ Get connection

45、to DB.public static Connection con =DriverManager.getConnection(url, “username“, “password“);/ Create statement object which would be used in writing DDL and DML/ SQL statement.public static Statement stmt = con.createStatement();/ Send SQL SELECT statements to the database via the Statement.execute

46、Query/ method which returns the requested information as rows of data in a/ ResultSet object.ResultSet result = stmt.executeQuery(“select top 1 email_address from user_register_table“);/ Fetch value of “email_address“ from “result“ object.String emailaddress = result.getString(“email_address“);/ Use

47、 the emailAddress value to login to application.selenium.type(“userID“, emailaddress);selenium.type(“password“, secretPassword);selenium.click(“loginButton“);selenium.waitForPageToLoad(timeOut);Assert.assertTrue(selenium.isTextPresent(“Welcome back“ +emailaddress), “Unable to log in for user“ +emailaddress)这是一个简单的 Java 例子从数据库中检索数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报