在appium中自动检测设备的操作系统

时间:2017-04-18 12:21:15

标签: android ruby cucumber appium appium-ios

我正在使用appium_lib在iOS和Android中自动执行测试

目前,我正在维护两个套件,一个用于Android,另一个用于iOS。

这个黄瓜中是否有appium_lib gem,以便在单个套件中维护iOS和Android的情况?让appium自动检测连接的设备,并执行相应标记的测试用例?

如果Appium检测到它是iOS,请运行在iOS cucumber -t @ios下标记的测试用例

我理解env.rb可以帮助hooks.rb before doif我可以提供else if $driver.device_is_android? == 'true' 'cucumber -t @Android' else 'cucumber -t @iOS' end 条件

adb shell getprop | grep build.version.release

这样的东西?可能吗?我无法在互联网上找到有关自动检测设备操作系统的信息,因此将此问题作为我的想法发布。

我知道我可以使用命令$driver.device_is_android?读取操作系统的版本,因此想知道除if

之外是否可以使用一个常用命令读取操作系统

现在要运行黄瓜案例,对于iOS和Android,我需要在appium中传递个别功能。有没有办法在else<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/coordinator_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="@dimen/collapsing_height" android:fillViewport="true" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <RelativeLayout android:id="@+id/past_upcoming_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#efeded" android:fitsSystemWindows="true" android:orientation="vertical" app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"> <TextView android:id="@+id/upcoming_heading" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="center_horizontal" android:padding="@dimen/spacing_normal_8dp" android:text="@string/upcoming_appointments" android:textSize="@dimen/text_size18sp" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/upcoming_heading"> <android.support.v7.widget.RecyclerView android:id="@+id/upcoming_appointments_recycler_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:orientation="horizontal" /> <TextView android:id="@+id/no_upcoming_list" android:layout_width="wrap_content" android:layout_height="200dp" android:layout_gravity="center" android:gravity="center" android:text="@string/no_upcoming_appointment" android:textSize="@dimen/text_size18sp" /> </FrameLayout> <TextView android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_alignParentBottom="true" android:layout_gravity="center" android:gravity="center" android:text="@string/past_appointments" android:textSize="@dimen/text_size18sp" /> </RelativeLayout> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:layout_scrollFlags="scroll|enterAlways"> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/nestedscrollview" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#efeded" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/past_appointments_recycle_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> 条件下以编程方式执行此操作?

1 个答案:

答案 0 :(得分:0)

我也遇到了这个难题,但我的解决方法有所不同。

在我们的例子中,我们在Appium上使用Cucumber,因此我仅使用代表我的平台的参数来执行它,例如:

黄瓜PLATFORM = iOS

然后在我的env.rb文件中,我得到了一个论点:

@platform = ENV ['PLATFORM']

然后我就用它来获得想要的功能:

n

运行测试时,您始终知道要测试的平台,因此将其作为参数发送是有意义的。