首先定义登录页面,上代码吧

LoginPage.java

package com.test.selenium.page;

import org.openqa.selenium.By;

import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.page; public class LoginPage { public SearchResultsPage searchFor(String text) {
$(By.id("kw")).val(text).pressEnter();
return page(SearchResultsPage.class);
} }

LoginTest.java

package com.test.selenium.page;

import static com.codeborne.selenide.Selenide.open;

import org.junit.Before;
import org.junit.Test; import com.codeborne.selenide.Configuration; import static com.codeborne.selenide.CollectionCondition.sizeGreaterThan;
import static com.codeborne.selenide.Condition.text; public class LoginTest { @Before
public void test() {
Configuration.browser ="chrome";
System.setProperty("webdriver.chrome.driver", "D:\\work\\com.test.selenium\\drivers\\chromedriver.exe");
} @Test
public void testBaidu() {
LoginPage page = open("https://baidu.com/", LoginPage.class);
SearchResultsPage results = page.searchFor("selenide"); results.getResults().shouldHave(sizeGreaterThan(1));
results.getResult(0).shouldHave(text("Selenide: concise UI tests in Java"));
}
}

SearchResultsPage.java

package com.test.selenium.page;

import com.codeborne.selenide.ElementsCollection;
import com.codeborne.selenide.SelenideElement; import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$$; import org.openqa.selenium.By; public class SearchResultsPage {
public ElementsCollection getResults() {
return $$(By.xpath(".//*[contains(@class, 'c-container')]"));
}
public SelenideElement getResult(int index) {
return $(By.xpath(".//*[contains(@class, 'c-container')]"), index);
}
}

利用这样的方式进行,相互配合使用,可以最大化复用页面。

实例:可以参考git代码部分 https://github.com/wallaceok/light_selenide   后续进阶介绍中会详情介绍这个封装的内容。请继续关注!

selenide UI自动化进阶二 pageObject实现页面管理的更多相关文章

  1. python UI自动化实战记录七:页面2用例编写

    使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...

  2. python UI自动化实战记录六:页面1用例编写

    使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...

  3. UI自动化(二)css选择器

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. 小程序UI自动化(一):appium小程序自动化尝试

    appium 进行 小程序自动化尝试: 由于工作中进行app自动化用的是appium,故首先尝试用appium进行小程序自动化,以美团小程序为例(python脚本实现) 一.配置基础信息 启动微信ap ...

  5. Selenide UI 自动化测试

       我没有拼写错误,确实不是 Selenium ,但是,只要是 Web UI 自动化测试框架,基本上都是基于Selenium 的.Selenide 也不例外.那为啥不直接用Selenium呢? 因为 ...

  6. 聊聊UI自动化的PageObject设计模式

    当我们开发UI自动化测试用例时,需要引用页面中的元素(数据)才能够进行点击(动作)并显示出页面内容.如果我们开发的用例是直接对HTML元素进行操作,则这样的用例无法"应对"页面中U ...

  7. UI自动化页面需要选择上传文件

    UI自动化页面上传文件,百度查的时候说有4中方法,简便的方法是安装SendKeys,但是百度说这个只支持python2.7的 我的python版本是3.7的,目前还只碰到了非<input typ ...

  8. WebDriver基本操作入门及UI自动化练手页面

    在这里集中了我们在做UI自动化时常见的一些控件操作.希望能对新手有帮助. 下载地址:http://files.cnblogs.com/zhangfei/demo.rar package com.tes ...

  9. UI自动化实战进阶PO设计模式

    前言 经过前面的实战我们已经编写了几个测试用例,下面我们要用PO设计模式来调整我们的代码,让页面元素和测试业务进行分离,这样看起来直观而且后期的维护也方便. python有一个第三方的PO设计的库,既 ...

随机推荐

  1. Android学习笔记_44_apk安装、反编译及防治反编译

    一.APK安装 1.首先需要AndroidManifest.xml中加入安装程序权限: <!-- 安装程序权限 --> <uses-permission android:name=& ...

  2. jdbc连接各种数据库字符串

    oracle driverClass:oracle.jdbc.driver.OracleDriver url:jdbc:oracle:thin:@127.0.0.1:1521:dbname mysql ...

  3. sql得到表中的列信息

    取列全部用的 sys. 中的表 CTE:WITH name AS() 用法:   sql树形查询 ①主键信息 SELECT ic.column_id, ic.index_column_id, ic.o ...

  4. Oracle数据库用户密码设为无限期

    oracle数据库用户密码默认为180天,密码过期后将无法登陆数据库. 一.查询用户所属PROFILE SQL> SELECT username,PROFILE FROM dba_users; ...

  5. CALayer简介(转)

    一.简单介绍  在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮,一个文本标签,一个文本输入框,一个图标等等,这些都是UIView.  其实UIView之所以能显示在屏幕上,完全 ...

  6. Linux分享笔记:系统状态检测命令小结

    作为一名合格的运维人员,要能很好地了解Linux服务器,要能熟练查看Linux系统的运行状态.以下是常用到的Linux系统状态检测命令. 1. ifconfig:用于获取网卡配置与网络状态等信息.通常 ...

  7. DevOps - 版本控制 - GitHub

    README Badges 徽章 Shields.io: Quality metadata badges for open source projects  徽章 官网:https://shields ...

  8. BC追踪

    项目又要开始改造了,记录一下改造过程中碰到的坑和解决思路,避免以后回头看看自己的笔记都不知道写了什么. (一)敏感信息混淆 (二)活用ComponentScan (三)Swagger配置多项目共用 ( ...

  9. sql语句中#{}和${}的区别

    #---将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by “111”, 如果传入的 ...

  10. Mysql 查看连接数,状态,最大并发数

    MySQL: ERROR 1040: Too many connections”的异常情况,造成这种情况的一种原因是访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力:另一种原 ...