我刚开始使用nightwatch.js,我正在使用page_objects来访问我测试中的元素。所以我想知道是不是我们可以在页面对象的各个部分中有部分?我知道我们可以指定一个级别的部分。我所做的是这样的事情:
module.exports = {
url : 'http://127.0.0.1:8111/local.html#open?view=shelf&lang=en_US',
sections : {
topContainer : {
selector : '.top_container',
elements : {
logo : {
selector : '.logo'
},
settingsButton : {
selector :'.dropdown'
},
searchBox : {
selector : '.search_box'
},
sortOrderButton : {
selector : '.icond'
}
}
},
library : {
selector : '.library',
bookList : {
selector : 'ul.library_container'
}
}
}
};
我们可以在部分内部有部分,如果不是,我们如何在@variable
client.elements('css selector','@top_container ul.dropdown-menu li', function (result) {
if ( result.value.length == 3 ) {
this.verify.ok(result.value.length, '3 languages loaded');
}
});
谢谢!
答案 0 :(得分:1)
“使用页面对象”的nightwatch.js文档指定了
请注意,节中的每个命令和断言(除了期望断言)都会返回该节以进行链接。如果需要,您可以将部分嵌套在其他部分下,以用于复杂的DOM结构。
所以,我尝试使用命中并尝试制作正确的json结构,现在效果很好:)
page_object中的示例代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="267.9dp"
android:layout_gravity="center_horizontal"
android:id="@+id/frameLayout1">
<ImageView
android:src="@drawable/fone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:gravity="center"
android:id="@+id/imageView1" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:id="@+id/linearLayout1"
android:layout_marginBottom="0.0dp">
<ImageButton
android:src="@drawable/menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/privateButton"
android:layout_marginRight="98.9dp"
android:background="#00000000" />
<ImageButton
android:src="@drawable/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/logoButton"
android:layout_marginRight="113.7dp"
android:background="#00000000" />
<ImageButton
android:src="@drawable/cart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/cartButton"
android:background="#00000000" />
</LinearLayout>
</FrameLayout>
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="142.7dp"
android:layout_gravity="center_horizontal"
android:id="@+id/linearLayout2">
<Button
android:text="Суші"
android:layout_width="192.8dp"
android:layout_height="fill_parent"
android:gravity="center"
android:id="@+id/button1"
android:background="@drawable/sushi"
android:textColor="#ffffff"
android:textSize="20sp"
android:textStyle="bold" />
<Button
android:text="Роли"
android:layout_width="192.8dp"
android:layout_height="fill_parent"
android:gravity="center"
android:id="@+id/button2"
android:background="@drawable/rolli"
android:textColor="#ffffff"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_gravity="center_horizontal"
android:layout_height="142.7dp"
android:id="@+id/linearLayout3">
<Button
android:text="Сети"
android:layout_width="192.8dp"
android:layout_height="match_parent"
android:gravity="center"
android:id="@+id/button3"
android:background="@drawable/sets"
android:textColor="#ffffff"
android:textSize="20sp"
android:textStyle="bold" />
<Button
android:text="Холодні Закуски"
android:gravity="center"
android:layout_width="192.8dp"
android:layout_height="match_parent"
android:id="@+id/button4"
android:background="@drawable/holodni"
android:textColor="#ffffff"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:id="@+id/linearLayout4"
android:layout_marginLeft="0.0dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="#f2565c"
android:id="@+id/linearLayout5">
<ImageButton
android:src="@drawable/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/previousButton"
android:layout_marginRight="143.8dp"
android:background="#00000000"
android:layout_marginTop="17.8dp"
android:clickable="true"
android:layout_marginLeft="13.8dp" />
<ImageButton
android:src="@drawable/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/homeButton"
android:layout_marginRight="143.8dp"
android:background="#00000000"
android:layout_marginTop="13.6dp"
android:clickable="true" />
<ImageButton
android:src="@drawable/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/nextButton"
android:layout_marginLeft="0.0dp"
android:background="#00000000"
android:layout_marginTop="17.8dp"
android:clickable="true" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
}
并在测试用例中引用它们,例如
sections : {
book_view : {
selector : '.read_book_view',
sections : {
top_container : {
selector : '.top_container',
elements : {
lib_view : {
selector : '.lib_view'
},
toc_link : {
selector : '.dropdown .dropdown-toggle'
},
toc_index : {
selector : '.dropdown .index-dropdown'
},
notes_and_hightlights : {
selector : '.page_access'
},
settings : {
selector : '#settings_b'
},
search : {
selector : '.search_trigger'
},
zoom : {
selector : '.zoom_iconsset'
}
}
}
}
}
谢谢!