-
2021-03-14 21:04:49
PageOne 和 PageTwo 都需要使用 MasterPage 方法(例如,单击“确定”) . 我正在尝试在 MasterPage 的构造函数中初始化两个页面 . IntelliJ告诉我要么将super(驱动程序)添加到 Page1 / Page2 构造函数,要么添加一个no arg构造函数来构建 . 在这两种情况下,测试都无法运行 . 使用super(驱动程序)构造函数时,页面无法初始化,并且在no arg构造函数中, clickOk() 方法在从Page1 / Page2方法调用时失败 .
MasterPage:
public class MasterPage {
private WebDriver driver;
public Page1 p1;
public Page2 p2;
public MasterPage(WebDriver driver) {
this.driver = driver;
p1 = new Page1(driver);
p2 = new Page2(driver);
PageFactory.initElements(driver, this);
}
@FindBy(id = "OkBtn")
private WebElement okBtn;
public void clickOk() {
okBtn.click();
}
}
Page1:
public class Page1 extends MasterPage {
private WebDriver driver;
public Page1(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
@FindBy(id="field")
private WebElement elementOne;
public void completePage() {
elementOne.click();
clickOk();
}
}
Page2:
public class Page2 extends MasterPage {
private WebDriver driver;
public Page2(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
@FindBy (id="field")
private WebElement elementTwo;
public void completePageTwo() {
elementTwo.click();
clickOk();
}
}
我的意图是像这样使用它们:
public class Page1Steps {
MasterPage master;
WebDriver driver;
public void testMethod() {
master = new MasterPage(driver);
master.p1.completePage();
master.p2.completePageTwo();
}
}
您可能会说,我不是100%确定解决此问题的最佳方法,因此任何指导都会非常感激 .
更多相关内容 -
传感器原理及应用_第八章(1).rar
2019-09-13 05:46:36传感器原理及应用_第八章(1)rar,传感器原理及应用,主讲:王殿生教授,第八章主要讲解光电式传感器的相关知识 -
LCD1602底层函数——写得非常好!
2021-05-23 12:08:37//====================================================================// // 实现功能LCD初始化函数 // 参 数:无 // 返 回 值:无 // 在main()函数开始时调用,并且调用后紧跟着50ms的延时 //==============...#ifndef
__LCD1602display_H_
#define
__LCD1602display_H_
#include
#include
//====================================================================//
//LCD的引脚接线定义,使用并行数据传输模式
//====================================================================//
#define
LCM_RW P2_6 //定义LCD引脚
#define
LCM_RS P2_5
#define
LCM_E P2_7
#define
LCM_Data P0
//====================================================================//
//用于检测LCM状态字中的Busy标识
#define
Busy 0x80
//====================================================================//
// 实现功能:
向LCD写入数据
// 参
数:字符型
// 返 回
值:无
//====================================================================//
void
WriteDataLCM(unsigned char WDLCM);
//====================================================================//
// 实现功能:
向LCD写入命令
// 参
数:字符型
// 返 回
值:无
//====================================================================//
void
WriteCommandLCM(unsigned char WCLCM,BuysC);
//BuysC为0时忽略忙检测
//====================================================================//
// 实现功能:
向LCD读出数据
// 参
数:字符型
// 返 回
值:无
//====================================================================//
//unsigned
char ReadDataLCM(void);
//====================================================================//
// 实现功能:
读LCD状态
// 参
数:字符型
// 返 回
值:unsigned char
//====================================================================//
unsigned
char ReadStatusLCM(void);
//====================================================================//
//
实现功能LCD初始化函数
// 参
数:无
// 返 回
值:无
//
在main()函数开始时调用,并且调用后紧跟着50ms的延时
//====================================================================//
void
LCMInit(void);
//====================================================================//
// 实现功能:
在LCD屏幕上显示1个字符
// 参
数:字符型
// 返 回
值:无
//
X:字符从横向哪一个位置开始显示(取值:0-15)
//
Y:字符显示在哪一行(取值:0-1)
//
DData:要显示的字符(ASCII码)
//====================================================================//
void
DisplayOneChar(unsigned char X, unsigned char Y, unsigned char
DData);
//====================================================================//
// 实现功能:
在LCD屏幕上显示字符串
// 参
数:字符型
// 返 回
值:无
//
X:字符从横向哪一个位置开始显示(取值:0-15)
//
Y:字符显示在哪一行(取值:0-1)
//
DData:要显示的字符串(ASCII码,逐个显示)
//====================================================================//
void
DisplayListChar(unsigned char X, unsigned char Y, unsigned char
code *DData);
//====================================================================//
// 实现功能:
5毫秒延时子程序
// 参
数:无
// 返 回
值:无
//====================================================================//
void
Delay5Ms(void);
#endif
//__LCD_H_
//======================================================================//
//本程序是LCD1602显示程序,包括在LCD面板任何一个位置现在一个字符,和在
//LCD1602任何一个位置起显示一个字符串的功能。
//MCU类型:C51
//
//操作步骤:
//1)首先将LCD1602display.c和LCD1602display.h两个文件拷贝到工程的根目录下。
//2)在main()函数开始处调用LCD1602初始化函数LCMInit();
//3)调用Delay5Ms(),延时50毫秒(本程序中有,不用另外写)。
//4)延时完毕之后便可以调用DisplayOneChar(unsigned char X,
unsigned char Y, unsigned char DData);
//
在LCD1602任何1个位置显示1个字符();
//
X:字符从横向哪一个位置开始显示(取值:0-15)
//
Y:字符显示在哪一行(取值:0-1)
//
DData:要显示的字符(ASCII码)
//
或者调用DisplayListChar(unsigned char X, unsigned
char Y, unsigned char code *DData);在任何
//
一行,任何位置上显示一个字符串。
//
X:字符从横向哪一个位置开始显示(取值:0-15)
//
Y:字符显示在哪一行(取值:0-1)
//
DData:要显示的字符串(ASCII码,逐个显示)
//====================================================================//
②底层函数文件"LCD1602display.c"
#include "LCD1602display.h"
//
void WriteDataLCM(unsigned char
WDLCM)
{
ReadStatusLCM(); //检测忙
LCM_Data = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0;
//若晶振速度太高可以在这后加小的延时
LCM_E = 0; //延时
LCM_E = 1;
}
//
void WriteCommandLCM(unsigned char WCLCM,BuysC)
//BuysC为0时忽略忙检测
{
if (BuysC) ReadStatusLCM();
//根据需要检测忙
LCM_Data = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
}
//
//
unsigned char
ReadStatusLCM(void)
{
LCM_Data =
0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while (LCM_Data & Busy);
//检测忙信号
return(LCM_Data);
}
//
void
LCMInit(void)
{
LCM_Data = 0;
WriteCommandLCM(0x38,0);
//三次显示模式设置,不检测忙信号
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,1);
//显示模式设置,开始要求每次检测忙信号
WriteCommandLCM(0x08,1);
//关闭显示
WriteCommandLCM(0x01,1);
//显示清屏
WriteCommandLCM(0x06,1); //
显示光标移动设置
WriteCommandLCM(0x0c,1); //
显示开及光标设置
}
//
void DisplayOneChar(unsigned char X, unsigned
char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF;
//限制X不能大于15,Y不能大于1
if (Y) X |= 0x40;
//当要显示第二行时地址码+0x40;
X |= 0x80; //算出指令码
WriteCommandLCM(X, 1);
//发命令字
WriteDataLCM(DData); //发数据
}
//
void DisplayListChar(unsigned char X, unsigned
char Y, unsigned char code *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF;
//限制X不能大于15,Y不能大于1
while (DData[ListLength]>0x19)
//若到达字串尾则退出
{
if (X <= 0xF) //X坐标应小于0xF
{
DisplayOneChar(X, Y, DData[ListLength]);
//显示单个字符
ListLength++;
X++;
}
}
}
//
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
-
Vue初始化子组件的方法
2020-11-25 16:52:32这里提供两种初始化子组件的方式 1.设置子组件的ref属性,通过$refs.refAttribute.init来初始化子组件 首先在子组件中设置一个init方法,用来设置绑定的是否可见参数为true以及初始化子组件的form表单内容 methods:...在前端Vue开发中,经常遇到过这种需求,点击某条数据来查看详情,详情页又被单独封装成一个组件,在父组件中引入该子组件,当点击按钮触发事件时,传入数据参数,初始化子组件,设置子组件可见。这里提供两种初始化子组件的方式
1.设置子组件的ref属性,通过$refs.refAttribute.init来初始化子组件
首先在子组件中设置一个init方法,用来设置绑定的是否可见参数为true以及初始化子组件的form表单内容
methods: { init (vehicleNumber) { const vehicle = vehicleNumber && vehicleNumber.length > 0 ? vehicleNumber[0] : '' const letter = vehicleNumber && vehicleNumber.length > 1 ? vehicleNumber[1] : '' const num = vehicleNumber && vehicleNumber ? vehicleNumber.substring(2) : '' this.$nextTick(() => { this.form.setFieldsValue({ //表单内容由传来的参数赋值 selectedAbbreviations: vehicle, Letters: letter, text: num }) }) this.visible = true // 组件是否可见 },
在父组件中引入子组件并设置ref属性
<selectVehicleDriverNumber ref="selectVehicleDriverNumber" @getVehicle_driverNumber="getVehicleDriverNumber"></selectVehicleDriverNumber> <!--@getVehicle_driverNumber是监听子组件修改内容后传出的参数,由父组件接收并调用方法-->
当点击某条记录(数据)后,初始化子组件
<a-icon slot="suffix" type="edit" style="color: rgba(0,0,0,.45)" @click="openModal"/>
openModal () { this.$refs.selectVehicleDriverNumber.init(this.form.getFieldValue('license_plate_number')) },
2.使用父子组件间的通信,通过监听某个值的状态来决定是否初始化子组件
在父组件中引入子组件并传递一个对象,该对象包含了一个Boolean值(默认为false)和另一个对象,Boolean值用来决定是否初始化组件,对象为传递的参数
<listEdit ref="listEdit" :show="componentsShow" ></listEdit>
当点击某条记录(数据)后,更改对象中的Boolean值同时将参数放入componentsShow对象中
<a @click="editClick(record)">编辑</a>
editClick (record) { this.componentsShow = { show: true, record: record, typeName: 'edit' } }
子组件接受传来的componentsShow对象参数
props: { // eslint-disable-next-line vue/require-default-prop show: { type: Object } }
在子组件中监听父组件传来的对象中的Boolean值,如果为true则调用子组件的init()函数初始化子组件(设置表单的值)
watch: { show (NewValue, OldValue) { console.log('new----', NewValue) console.log('old----', OldValue) if (NewValue.show) { this.init(NewValue.record, NewValue.typeName) } } }
-
java学习面向对象之父子构造函数初始化
2021-03-11 16:36:55在之前讲到java面向对象继承的时候,我们只讲到了两个比较重要的知识点,一个是父子类当中有同名的成员变量,这个时候,我们引入了super这个关键字来区分这两个同名成员变量,除此之外,我们还讲到了父子同名函数的...在之前讲到java面向对象继承的时候,我们只讲到了两个比较重要的知识点,一个是父子类当中有同名的成员变量,这个时候,我们引入了super这个关键字来区分这两个同名成员变量,除此之外,我们还讲到了父子同名函数的覆盖,这父子同名函数必须是参数类型、个数相同,返回值也相同才可以,同时子类要覆盖后的成员方法的访问权限要大于等于父类当中的同名函数权限。
那么还有一个地方我们没有讲到,那就是父子当中的构造函数是怎样的?
class Fu
{
Fu()
{
System.out.println("Fu chu shihua ");
}
}
class Zi extends Fu
{
Zi()
{
System.out.println("Zi lei chushi hua ");
}
}
class Extend1
{
public static void main(String[] args) {
new Zi();
}
}
此时我们编译,运行后结果是:
通过这个结果我们可以看出,即使我们初始化子类的时候,并没有显式的调用父类的构造函数,但是子类当中还是隐式的调用了父类的构造函数。那么把这个隐式调用转换成显式的是如何的呢?在我们子类的构造函数在JVM解析的时候默认加了一个super(),这个函数。这个函数是不是跟我们之前讲到构造函数的时候的this()调用本地构造方法很相似呢?
class Zi extends Fu
{
Zi()
{
super();//这里就隐式调用了父类的构造函数
System.out.println("Zi lei chushi hua ");
}
}
那么这里的隐式调用有一个不足,什么不足呢,如果我们此时父类的构造函数接受的参数不是空,这个时候在隐式调用的时候就会出错。因为隐式调用super()并没有接收参数,跟父类的构造函数不匹配,自然而然的会报错。
那么在这里还要讨论一下为什么要有super这个关键字,为什么子类的构造函数会隐式的调用父类当中的调用方法呢?
比如现在父类当中有一个成员变量,当我们要使用这个成员变量的时候,构造函数会对其进行初始化,如果此时我们如果调用未初始化的成员变量,那么此时变量就是在堆中默认的变量,这样显然是不合适的,调用一个未初始化的变量,毫无意义可言。
也就是说子类继承了父类中的内容(属性)在子类使用父类的属性之前,必须了解父类是如何对其属性进行初始化操作的。为完成这个初始化操作,子类必须在构造函数当中访问这个父类的构造函数super()。
class Fu
{
int num;
Fu( int x)
{
num = x;
System.out.println("Fu chu shihua ");
}
}
class Zi extends Fu
{
Zi()
{
super(8);
System.out.println("Zi lei chushi hua "+num);
}
}
class Extend1
{
public static void main(String[] args) {
new Zi();
}
}
比如这里如果我们不调用super()这个方法的时候,就会显得没有意义可言。
这里还有需要注意的一点就是,如果构造函数当中既有this() 还有 super()这两个构造函数的时候,我们应当如何处理。显然这两个方法不能存在一个构造函数体当中,因为这个两个构造方法,必须放到构造函数的第一个位置。既然调用this()就证明此时我们有多个构造函数对于一个类,这个时候我们可以把super()放到别的不用this()这个构造方法的类当中,代码如下:
class Fu
{
int num;
Fu( int x)
{
num = x;
System.out.println("Fu chu shihua ");
}
}
class Zi extends Fu
{
Zi(int x)
{
super(9);
System.out.println("This is first");
}
Zi()
{
this(9);
System.out.println("Zi lei chushi hua "+num);
}
}
class Extend1
{
public static void main(String[] args) {
new Zi();
}
}
Java当中的所有类都默认继承字object类,并且这个类在java虚拟机一运行的时候,就存在着。
那么java在调用构造函数时的内存图是怎样的呢?我们来画一下:
class Fu
{
Fu()
{
show();
}
void show()
{
System.out.println("Fu class construct");
}
}
class Zi extends Fu
{
int num = 10;
Zi()
{
super();
}
void show()
{
System.out.println("Zi lei construct"+num);
}
}
class Extend1
{
public static void main(String[] args) {
new Zi();
}
}
我们编译运行之后,结果就是:
我们来修改一下代码如下:
class Fu
{
Fu()
{
show();
}
void show()
{
System.out.println("Fu class construct");
}
}
class Zi extends Fu
{
int num = 10;
Zi()
{
super();
}
void show()
{
System.out.println("Zi lei construct"+num);
}
}
class Extend1
{
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
这个时候输出的结果是:
那么综合以上两个结果还有代码不同外,我们会有下面两个问题:
1、我们在只new Zi()的时候,为什么num是0
2、在我们调用show()方法的时候,为什么父类反而调用了子类的成员方法?
对于第二个问题,我们上一节讲到方法覆盖的时候就已经讲到过了,当子类的方法和父类的方法相同时,调用的是子类的方法。
对于第一个问题,我们用一个内存图解一下:
以上就是父子类构造方法调用的内存示意图。
需要说明的有两点:
1、通过super()初始化父类的时候,子类的成员变量并未初始化。等父类初始化完毕,才进行子类的成员变量显示初始化。
一个对象的实例化过程:
一、JVM读取指定目录下的.class文件,并且加载进内存。并且先加载此类的父类(在有直接父类的情况下)
二、在堆内存当中开辟内存,分配地址。
三、并在对象的空间内,对空间属性进行默认初始化
四、调用对应的构造函数进行初始化
五、在构造函数当中,第一行会先调用父类的构造函数进行初始化。
六、父类初始化完毕后,再对子类的属性进行显式初始化
七、再对子类的构造函数进行特定初始化
八、初始化完毕后,把地址赋值给引用变量。
待续....
-
为什么在初始化子类的时候,一定要先去初始化父类的对象
2019-05-09 11:00:04自己的理解: 当产生继承关系以后,在子类里面会有一个父类对象...在初始化子类的时候,一定要使父类已经存在了(所以要初始化先初始化父类对象).不然没办法调用父类的构造函数.父类必须在子类初始化之前就已经准备好. ... -
关于继承与构造函数重载的问题(初始化子类构造函数中的父类对象)求解答。。。
2018-01-03 17:49:08时间类CTime包含私有成员数据时(hour)分(minute)秒...CTime类包含若干成员函数(如下所示)。 class CTime { private: int hour,minute,second; public: CTime(); CTime(int th,int tm,int -
java 函数初始化作用
2021-02-12 14:14:04本人小白一枚,看java类的初始化的时候好晕的说,我觉着书上尽管说的对。但总认为有些信息没说出来,没说清楚,看了好多文章博客的,如今有些感悟,来小写下总结,也算是为以后再次复习种个好果子。先摘一下书上写的... -
解决初始化函数调用两次问题
2020-11-12 11:42:15原函数: (function init() { if (isUpdate()){ var tempdata = JSON.parse(localStorage.getItem("rowData")); $("#name").val(tempdata.name); $("#peoduceType").val(tempdata.peoduceType); -
KEIL怎么初始化子文件
2021-12-22 14:32:39在主函数中声明 #inclide "xx.h" 然后在main()中 xx_init();就是调用 现在的问题具体就是xx_init要怎么写才可以调用这个子文件全部的函数 解解答 可以吗 -
Qt构造函数的初始化问题
2020-08-10 15:32:06QT中用父类构造函数初始化子类的成员变量 Qt ------ 初始化构造函数参数,parent C++ 构造函数和析构函数是否可以继承? 描述 在Qt新建继承Qt类的类后,经常会在构造函数看到parent的参数的初始化。如: ... -
python __init__ 的函数初始化
2021-06-23 09:09:09class A: def __init__(self, name): self.name = name self.S1() def S1(self): self.s2 = [] ...在__init_()方法中用实例对方法S1进行初始化, 因此可以直接用实例初始化A的类方法S1下定义的s2 -
java基础-父类子类初始化顺序简析
2021-02-28 16:13:33首先,关于父类子类静态成员的初始化顺序,是一个笔试面试经常出现的问题,这个是一个基础,每一个写java代码的工程师都需要搞清楚的问题。但是,搞清楚归搞清楚,平时写代码的时候,正常情况下,都不会这样去写,就... -
python 类 子类 初始化 super
2021-02-27 13:19:41类的初始化方法 在写python代码时候,总能看到初始化__init__的定义,但其实 初始化方法__init__是可选。 class A: def __init__(self, x): self.x = x 可以看到类A具有的属性有属性变量x a = A(4) a.x # 输出4 ... -
【Java】父类子类初始化问题
2018-04-18 11:46:56父类子类初始化问题 例子: public class Test8 extends Base{ private String name = "dervied"; public Test8() { tellName(); printName(); } public void... -
java含参构造函数初始化
2021-02-12 22:02:478ioew 初始化的介绍可以参考点击打开链接 这里有些疑惑,希望可以交流: 是不是在创建对象时进入构造函数如果该类有继承关系就根据Super()/Super(参数)进入父类构造父类构造对象完成后按照初始化方法初始化子类对象... -
QT中用父类构造函数初始化子类的成员变量
2014-04-02 13:55:32分类: C++技术总结 2012-02-27 17:11 998人阅读 评论(0) 收藏 举报 ...派生子类会继承基类的所有成员,除了...因此,子类对于从父类继承过来的成员变量,若不想自己写构造函数初始化时,就只能先初始化父类中的 -
派生类的构造函数的初始化???
2019-08-12 15:52:35(1)派生类中的基类子对象和子对象必须初始化,初始化在派生类的构造函数的初始化列表中,如果初始化列表中没有进行初始化,则调用缺省的构造函数进行初始化。 (2)派生类构造函数的调用顺序: 基类的构造函数 子对象... -
Python类初始化– Python __init __()函数
2020-07-13 05:04:52Python类初始化 (Python class init) Whenever a beginner starts learning the Python programming language, they come across something like __init__ which usually they don’t fully understand. In this ... -
java使用@PostConstruct注解解决初始化class调用
2021-02-25 18:39:02但是调用它之前需要去数据库获取一些必要的配置项,且无需多次查询(即初始化class前调用一次即可)。后来发现这个注解,惊为**注解说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct... -
python中子类调用父类的初始化方法
2020-12-05 03:27:34python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法。如果一个方法在子类的实例中被调用...子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现... -
Java 父类子类的对象初始化过程
2018-08-08 16:08:26Java 父类子类的对象初始化过程摘要: Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况。1. 基本初始化过程:对于一个简单类的初始化过程是: &... -
java类的初始化和构造函数
2021-02-27 10:36:54本人小白一枚,看java类的初始化的时候好晕的说,我觉着书上尽管说的对。但总认为有些信息没说出来,没说清楚,看了好多文章博客的,如今有些感悟,来小写下总结,也算是为以后再次复习种个好果子。先摘一下书上写的... -
C++中的默认构造函数和初始化列表和子类调用父类构造函数
2018-12-19 00:30:45默认构造函数:未提供显式初始值时,用来创建对象的构造函数。 class testClass { public: testClass(); /* 默认构造函数 */ testClass(int a, char b); /* 构造函数 */ testClass(int a=10,c... -
静态代码块、构造代码块、构造方法在初始化子类对象时的执行顺序
2020-05-08 23:53:10然后在初始化子类成员,执行子类的构造代码块,子类的构造方法 子类和父类的执行顺序说明: 父类的静态初始化域, 子类的静态初始化域, 父类的非静态初始化域, 父类的构造函数, 子类的非静态初始化域, 子类的... -
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2020-12-19 20:30:58本文实例分析了ThinkPHP中的__initialize()和类的构造函数__construct()。分享给大家供大家参考。具体分析如下: ...3、当子类和父类都有__construct()函数的时候,如果要在初始化子类的时候同时调用父类的__ -
【嵌入式】定时器初始化
2021-07-12 11:07:43【嵌入式】定时器初始化完整代码 完整代码 /* /* * 功能:初始化Timer0 */ //#define GPD0CON (*(volatile unsigned int *)0xE02000A0) // PWM输出引脚 #define TCFG0 (*(volatile unsigned int *)0xE2500000) ... -
如何使用初始化程序设置我的多进程池?
2021-03-18 11:36:03如何使用初始化程序设置我的多进程池?我正在尝试使用多进程Pool对象。 我希望每个进程在启动时打开数据库连接,然后使用该连接来处理传入的数据。(而不是为每个数据位打开和关闭连接。)这看起来像是初始化程序 为此... -
初始化定时器
2021-07-27 14:46:48编写定时器服务函数 开启定时器 删除定时器 初始化定时器 void init_timer(struct timer_list *timer) 修改定时器值 int mod_timer(struct timer_list *timer, unsigned long expires) 添加定时器 void add_timer...