nightwatch.js

时间:2015-07-30 08:00:58

标签: node.js selenium testing nightwatch.js

我刚开始使用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');
      }
    });

谢谢!

1 个答案:

答案 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'
          }
        }
      }
    }
  }

谢谢!