framelayout

Appium+Python实现自动化登录

匿名 (未验证) 提交于 2019-12-02 22:11:45
#Appium+Python实现自动化测试 Appium简介 官方的概述为: Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol. Appium是一个开源的测试自动化框架,用于本地、混合和移动Web应用程序。 它使用WebDevices协议驱动iOS、Android和Windows应用程序。也就是可以用它来帮助我们实现自动化测试,代替人为的点击,每次发版都能够按照案例清单完整的跑一套流程,保证当前版本的稳定性。 支持多种语言开发定制 python,javaSprict,java,ruby,Objective C,php,.net,RobotFramework 其中Android SDK ≥ 16 支持多平台 mac和Windows Appium 安装方式 1:直接安装Appium客户端 Appium官网 ,点击downLoad即可 2:命令行本地安装 1:安装node 2:npm install -g appium 3:npm install -g appium-doctor appium

Android 第八课——UI布局2

北城余情 提交于 2019-11-30 15:23:07
Android布局分为:线性布局、相对布局、表格布局、帧布局、网格布局五种 1)FrameLayout(帧布局) 帧布局是最简单的布局对象,它被定制为用户屏幕上的一个空白备用区域,之后用户可以在其中填充一个单一对象,例如一张图片等。所有的子元素将会固定在屏幕左上角;我们不能为FrameLayout中的一个子元素指定一个位置。而且新增的子元素将会直接覆盖填充旧的子元素,类似于一个栈结构,当然也不一定是全部挡住,这样看透明度以及大小来决定。 <FrameLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:foreground="#ff0000" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/loginName" android:textSize="@dimen/dp50"/> <TextView android:layout_width="wrap_content" android

第五讲:用户界面 View(一)

爱⌒轻易说出口 提交于 2019-11-30 15:22:57
一、什么是View 我们上节课说,Activity是Android程序的显示层,每一个显示窗口都是一个Activity;可是Activity本身无法显示在屏幕上,我们可以把它理解成是一个抽象层,一个壳子;就譬如一个JSP页面,它本身并没有显示出来任何东西,负责显示的是他生成的HTML标签。那么Android里谁才是真正显示出来的部分?--是View和ViewGroup,而ViewGroup其实也是View的子类。 有了上述的概念,我们现在可以讲明白一个Activity中的显示元素是如何显示出来的了。首先UI组件是按层次结构来由外到内的方式逐步展示的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用。当Activity被激活并且获得焦点时,系统会通知activity并且请求根节点去计算并绘制树,根节点就会请求它的子节点去绘制它们自己。每个树上的ViewGroup节点会负责绘制它的子节点。ViewGroup会计算它的有效空间,布局所有的子显示对象,并最终调用所有的子显示对象的 Draw()方法来绘制显示对象。各个子显示对象可以向父对象请求它们在布局中的大小和位置,但最终决定各个子显示对象的大小和位置的是父对象。 Android程序借助View和ViewGroup对象来构建用户界面

Android布局详解之一:FrameLayout

早过忘川 提交于 2019-11-29 12:36:18
原创文章,如有转载,请注明出处: http://blog.csdn.net/yihui823/article/details/6702273 FrameLayout是最简单的布局了。所有放在布局里的控件,都按照层次堆叠在屏幕的左上角。后加进来的控件覆盖前面的控件。 在FrameLayout布局里,定义任何空间的位置相关的属性都毫无意义。控件自动的堆放在左上角,根本不听你的控制。 看以下的例子: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="50dip" android:textColor="#ffffff" android:text="第一层"/> <TextView android:layout_width="fill_parent" android:layout

Fragment:碎片的动态加载

♀尐吖头ヾ 提交于 2019-11-29 11:43:35
动态添加碎片 碎片真正的强大之处 在于,它可以在程序运行时动态地添加到活动当中。根据具体情况来动态地添加碎片,你就 可以将程序界面定制得更加多样化。 我们还是在上一节代码的基础上继续完善,新建 another_right_fragment.xml,代码如下 所示: <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android: layout_width= "match_parent" android: layout_height= "match_parent" android: background= "#ffff00" android: orientation= "vertical" > <TextView android: layout_width= "wrap_content" android: layout_height= "wrap_content" android: layout_gravity= "center_horizontal" android: textSize= "20sp" android: text= "This is another right fragment" /> </LinearLayout> 这个布局文件的代码和 right_fragment

Android 布局优化 Merge的使用

本小妞迷上赌 提交于 2019-11-29 06:27:25
一、Merge的作用 The tag helps eliminate redundant view groups in your view hierarchy when including one layout within another. 大意是,merge标签是用来帮助在视图树中减少重复布局的,当一个layout包含另外一个layout时。 二、示例 不使用merge layout1.xml <FrameLayout> <include layout="@layout/layout2"/> </FrameLayout> layout2.xml: <FrameLayout> <TextView /> </FrameLayout> 实际效果: <FrameLayout> <FrameLayout> <TextView /> </FrameLayout> </FrameLayout> 使用merge layout1.xml <FrameLayout> <include layout="@layout/layout2"/> </FrameLayout> layout2.xml: <merge> <TextView /> </merge> 实际效果: <FrameLayout> <TextView /> </FrameLayout> 三、要点 merge必须放在布局文件的根节点上。

Android ——TabHost使用

℡╲_俬逩灬. 提交于 2019-11-28 18:56:24
在Android中,通常可以使用切换卡(选项卡)实现切换显示不同页面内容的功能。这一功能可以通过TabHost控件来实现。   下面我们就通过一个简单的实例演示如何使用TabHost控件完成切换卡功能,完成后的运行效果如图1所示。 图1 主页显示效果   可以看出,在该实例中,总共设置了四个TabHost标签,分别为主页、时间、联系人和搜索。在点击这些标签时,便可以完成相应页面内容的显示。 1.界面布局   TabHost是整个Tab的容器,是由TabWidget和FrameLayout 两部分组成的。其中,TabWidget是每个tab的标签,而FrameLayout则是tab所要显示的内容。   根据以上的描述,我们就可以对整个显示界面进行合理的布局了。我们以LinearLayout的垂直布局方式将整个TabHost分成上下两部分,上面使用TabWidget控件显示标签,下面使用FrameLayout布局显示每个标签下的对应内容。   具体的xml布局文件源码如下: <?xml version="1.0" encoding="utf-8"?>   <TabHost xmlns:android=" http://schemas.android.com/apk/res/android "    android:id=" @android :id/tabhost"   

动态添加一个view

∥☆過路亽.° 提交于 2019-11-28 01:52:23
enter.xml<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000"> <translate android:fromXDelta="-100%" android:toXDelta="0"/></set>out.xml <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000"> <translate android:fromXDelta="0" android:toXDelta="-100%"/></set>activity_main.xml <?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas

java + appium + selenium + 夜神模拟器实现App自动化测试或爬虫

本秂侑毒 提交于 2019-11-28 00:11:38
安装与环境配置 需要安装 appium 、 Android SDK 、夜神模拟器,并配置环境变量(安卓和夜神模拟器)。百度个教程即可。此处我提供一个简要的说明,如果想要更加详细的教程,请自行百度啦——我之前找到一堆。 安装appium 从官网 http://appium.io 下载Appium并安装。 安装Android SDK 下载一个安卓的SDK——自行百度或使用以下地址: http://tools.android-studio.org/index.php/sdk ,也可以使用我的版本: Android SDK , 密码 cyup 安装完成后需要配置 path 环境变量,一共是两个: D:\Android\Sdk\tools 和 D:\Android\Sdk\platform-tools 安装夜神模拟器 正常是使用真机进行测试的,但为了节省成本、方便部署,个人推荐安装夜神模拟器(市面上其他款模拟器应该也能做到类似功能),从官网下载安装。 安装完成后配置环境变量,地址为: D:\software\夜神模拟器\Nox\bin 。 下面需要保证安卓SDK和夜神模拟器的 adb 版本保持一致: 查看本地的安卓SDK中的 adb 版本,如果跟夜神模拟器的 nox_adb 不一致,就把夜神的 nox_adb.exe 替换掉(复制,重命名,粘贴–覆盖)。 # 查看安卓adb版本:adb -

Unity闪屏设计

喜你入骨 提交于 2019-11-27 06:40:25
项目需求,需要做一个闪屏,网上找了文章,大多数都是做个定时器(大概是这个意思),等两秒然后跳转主activity。 类似这些文章 https://blog.csdn.net/lindroid20/article/details/52557766 然后定时器这两秒游戏中是啥事都不做的,白等两秒。所以想换一种做法,显示闪屏时游戏也同时在加载。 Unity安卓之间的交互和安卓环境搭建就不多说了,资料很多 贴代码:java代码 private FrameLayout mLayoutContainer = null; private View mUnityView = null; private final Handler handler=new Handler(); private boolean mSDKisLoaded = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLayoutContainer = (FrameLayout) findViewById(R.id.main_layout_container); //onCreate显示闪屏