element

腾讯位置服务JSAPI教程-在地图上添加自定义覆盖物

霸气de小男生 提交于 2020-08-12 18:52:14
以下内容转载自多多洛爱学习的文章《JSAPI-在地图上添加自定义覆盖物》 作者:多多洛爱学习 链接: https://juejin.im/post/5ee5f80d51882542e2695874 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 地图上的覆盖物 在地图上添加覆盖物有两种方式,一是在canvas画布上渲染,比如JSAPI GL绘制 MultiMarker/MultiPolygon 等矢量图形覆盖物就是通过编写对应图形的数据解析及渲染程序,直接绘制在底图上层。这样的渲染方式下视角变换时图形也可以实现3D形变。另一种方式是通过CSS布局将其他DOM元素叠加到地图容器之上,这种方式下视角变换时DOM元素需重新计算布局,比如JSAPI v2的 Marker/Polygon 等覆盖物,以及JSAPI GL的 InfoWindow 信息窗,这些都属于DOM覆盖物。 如果你需要叠加一个自定义的复杂元素,第一种方式的话需要实现对应的数据解析和着色器程序,需要了解WebGL的渲染原理,成本很高,且不易变通。而DOM是每个前端工程师都非常熟悉的,简单几个标签加CSS就能实现高度定制的DOM元素。但是如何将一个DOM元素正确地安置在地图上,并且随着地图平移、旋转、缩放实时调整自己的位置呢? 这就要使用到 DOMOverlay 了

Appium+Python-项目实践一

♀尐吖头ヾ 提交于 2020-08-12 18:17:59
一、前言   前面讲了环境搭建和常用的元素定位,后续会持续以项目实践的方式去慢慢学习以及整理各方面的知识点,具体不会详细阐述,但会贴上完整代码,想要了解更多的可以直接网上查找资料哈,接下来用企业微信的应用(订单平台)做实践,环境配置:win10+Python 3.7.4+appium 1.16.0+unittest框架+真机andorid 8.0 二、关于Appium实现中文输入   1、要实现中文输入的话,在初始化里加入下面的代码就行了 # 实现中文输入,使用unicodeKeyboard的编码方式来发送字符串 ' unicodeKeyboard ' : True, # 将键盘给隐藏起来 ' resetKeyboard ' : True   2、如果Appium设置中文输入报错: Attempt to re-install io.appium.android.ime without first     原因:漏卸载应用     解决方法:查出所有的第三方安装包:一共3个,然后用adb卸载掉(adb shell pm list package -3或adb shell pm list package -3 | findstr appium),如图1 (图1:卸载应用)   3、 Appium 在 Android7.0 以上版本找不到元素的问题,解决方法:

Python入门学习笔记1-Python基础

二次信任 提交于 2020-08-12 17:11:37
Python入门学习笔记1-Python基础 前言:本文介绍了Python学习的前导知识概念以及必记基础函数,如善用help方法查看帮助文档,以及内置对象类型的概念以及常用函数的详解。 一、Python前导知识概念 1、什么是Python内置对象类型? Python已经定义的一些数据类型。 2、Python内置对象类型包括如下: 整数、浮点数、字符串、列表、元祖、字典、集合。 3、什么是Python内置函数? Python已经定义的函数。 4、Python内置函数包括如下: 更多详细Python内置函数请参见 官方文档: 5、常用内置函数介绍: Tip:以下代码均是在cmd的Python交互界面书写并运行的。“开始–>运行(cmd)–>python”进入Python交互界面 5.1 type(object) 返回一个对象类型,例如: >>> type ( 2 ) < class 'int' > 可以看到这个方法返回2是一个int类型的数据 5.2 help(object) 返回某对象的帮助文档,例如 非常重要 >>> help ( id ) Help on built -in function id in module builtins: id ( obj , / ) Return the identity of an object . This is guaranteed to

selenium---元素定位(find_element)

冷暖自知 提交于 2020-08-12 15:22:42
  前面介绍了元素定位的八大方法,今天在来介绍一种元素定位方法find_element方法 find_element find_element属于定位元素中的另一种方法,包含了常用的定位方法,使用的时候可能和其他的使用方法不一样,先看源码 源码: def find_element(self, by=By.ID, value= None): """ 根据策略和定位器找到给定的元素。 :使用方法: element = driver.find_element(By.ID, 'foo') :rtype: WebElement """ if self.w3c: if by == By.ID: by = By.CSS_SELECTOR value = ' [id="%s"] ' % value elif by == By.TAG_NAME: by = By.CSS_SELECTOR elif by == By.CLASS_NAME: by = By.CSS_SELECTOR value = " .%s " % value elif by == By.NAME: by = By.CSS_SELECTOR value = ' [name="%s"] ' % value return self.execute(Command.FIND_ELEMENT, { ' using ' : by, '

配置WCF同时支持WSDL和REST,swaggerwcf生成文档

混江龙づ霸主 提交于 2020-08-12 14:38:43
配置WCF同时支持WSDL和REST,SwaggerWCF生成文档 VS创建一个WCF工程,通过NuGet添加SwaggerWcf 创建完成后通过 程序包管理控制台 pm> Install-Package SwaggerWcf 也可在 工具 -> NuGet包管理器 -> 管理解决方案的NuGet程序包 安装。 配置 首先对项目添加Global.asax文件,改动如下: protected void Application_Start( object sender, EventArgs e) { RouteTable.Routes.Add( new ServiceRoute( " Service1 " , new WebServiceHostFactory(), typeof (Service1))); RouteTable.Routes.Add( new ServiceRoute( " api-docs " , new WebServiceHostFactory(), typeof (SwaggerWcfEndpoint))); } Web.config配置文件改动如下: 在<configuration>节点 下 添加 < configSections > < section name ="swaggerwcf" type ="SwaggerWcf.Configuration

Attribute Equals Selector [name=”value”]

懵懂的女人 提交于 2020-08-12 13:52:29
Attribute Equals Selector [name=”value”] attributeEquals selector Description: Selects elements that have the specified attribute with a value exactly equal to a certain value. version added: 1.0 jQuery( "[attribute='value']" ) attribute: An attribute name. value: An attribute value. Can be either a valid identifier or a quoted string. Attribute Contains Selector [name*=”value”] attributeContains selector Description: Selects elements that have the specified attribute with a value containing a given substring. version added: 1.0 jQuery( "[attribute*='value']" ) attribute: An attribute name.

Java常用开源库

℡╲_俬逩灬. 提交于 2020-08-12 13:34:32
Java的经久不衰,很大程度上得益于Java的生态好。在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类。Java的生态实在太大,这里只能列举一部分。如果你对此感兴趣,不妨去读读他们的源码。 v HTML解析器jsoup 1.1 介绍 jsoup( GitHub地址 、 中文文档 )是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1.2 示例 Document document = Jsoup.connect("https://www.cnblogs.com/toutou/" ) .userAgent( "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" ) .get(); // System.out.println(document); Elements elements = document.select("div.box.item" ); for (Element element : elements) {

Python+Appium实现自动化测试

杀马特。学长 韩版系。学妹 提交于 2020-08-12 11:51:24
一、环境准备 1.脚本语言:Python3.x IDE:安装P ycharm 2.安装Java JDK 、Android SDK 3.adb环境,path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows,官网地址 http://appium.io/ 点击下载按钮会到GitHub的下载页面,选择对应平台下载 安装完成后,启动Appium,host和port默认的即可,然后设置Android SDk和Java JDK 然后点下边那个保存并重启的按钮,然后点第一个Start Server按钮,将会看到 二、真机测试 1.连接手机 打开开发者模式,USB线连接手机和电脑,并且在开发者选项当中,开启USB调试 测试是否连接成功,可执行命令adb devices 出现上图就证明手机和电脑连接成功。。。 2. 点击Start Inspector Session, 按如下配置Desired Capabilities platformName :声明是ios还是Android系统 platformVersion : Android内核版本号,可通过命令adb shell getprop ro.build.version.release查看 deviceName :连接的设备名称,通过命令adb devices

Java集合源码分析(一)ArrayList

白昼怎懂夜的黑 提交于 2020-08-12 11:29:49
前言   在前面的学习集合中只是介绍了集合的相关用法,我们想要更深入的去了解集合那就要通过我们去分析它的源码来了解它。希望对集合有一个更进一步的理解!   既然是看源码那我们要怎么看一个类的源码呢?这里我推荐的方法是:     1)看继承结构       看这个类的层次结构,处于一个什么位置,可以在自己心里有个大概的了解。     2)看构造方法       在构造方法中,看做了哪些事情,跟踪方法中里面的方法。     3)看常用的方法       跟构造方法一样,这个方法实现功能是如何实现的   注:既然是源码,为什么要这样设计类,有这样的继承关系。这就要说到设计模式的问题了。所以我们要了解常用的设计模式,才能更深刻的去理解这个类。 一、ArrayList简介 1.1、ArrayList概述   1)ArrayList是可以 动态增长和缩减的索引序列,它是基于数组实现的List类 。   2)该类封装了一个动态再分配的Object[]数组,每一个类对象都有一个capacity属性,表示它们所封装的Object[]数组的长度,当向ArrayList中添加元素时,该属性值会自动增加。     如果想ArrayList中添加大量元素,可使用ensureCapacity方法一次性增加capacity,可以减少增加重分配的次数提高性能。   3)ArrayList的用法和Vector向类似

实战案例丨代码优化:如何去除context中的warning?

一个人想着一个人 提交于 2020-08-12 11:11:25
在一个java语言群里面,有人抛了这么一段代码出来,问题是出现了下下图中的warning,问有什么好的方法消除 这种强转都是因为类型链条断掉了,写入的时候擦除了类型,读出来的时候也就只能强转了,那个instanceof 其实并没有帮到什么忙,无外乎把A异常变成了B异常。 最简单的解决方法也非常直观,就是加上 @SuppressWarnings("unchecked")。 这里先不谈用其他的方法相对优雅的除掉这个warning,而是看看这段代码本身的问题。 这是一个context,这种模式就是一个数据容器,啥都能装,通过编码的人来保证类型匹配,进去擦除类型,出来补上类型,能不能弄对,全看人。 这种模式类似于在其他的语言里面就拿个容器类型就开始编程,忽略一切的type信息。 我们应当能够看到几个问题 1. context装进去的是有类型化的对象,出来就没有了,设计上讲究封装性,封装基本的就要保证对称,那么context抹除掉的东西,就应该由他来补上。 2. 由于他没有补上,所以所有使用的地方自己来补充,代码其实会产生很多冗余,考虑到他是一个context,那么实际上其他地方一定还有很多处有类似的代码 3. 这里模拟的其实是一个computeIfAbsent的逻辑,如果没有对象就补一个默认值,然后set进去,借用了isEmpty来婉转的表达容器里面没有这个元素