python+appium如何获取元素内容的颜色

python+appium如何获取元素内容的颜色,第1张

#重写元素定位的方法

class Action(object):

#初始化

def __init__(self, se_driver):

selfdriver = se_driver

#通过resource-i定位

def findId(self, id):

try:

f = selfdriverfind_element_by_id(id)

return f

except Exception as e:

print("未找到%s"%(id))

#通过class定位

def findClassName(self, name):

try:

f = selfdriverfind_element_by_class_name(name)

return f

except Exception as e:

print("未找到%s"%(name))

#通过text定位

def findAU(self, name):

try:

f = selfdriverfind_element_by_android_uiautomator('text(\"' + name +'\")')

return f

except Exception as e:

print("未找到%s"%(name))

#通过xpath定位

def findXpath(self, xpath):

try:

f = selfdriverfind_element_by_xpath(xpath)

return f

except Exception as e:

print("未找到%s"%(xpath))

#通过content-desc

def findAI(self, content_desc):

try:

f = selfdriverfind_element_by_access

这里有各种策略用于定位网页中的元素(locate elements),你可以选择最适合的方案,Selenium提供了一下方法来定义一个页面中的元素:

find_element_by_id

find_element_by_name

find_element_by_xpath

find_element_by_link_text

find_element_by_partial_link_text

find_element_by_tag_name

find_element_by_class_name

find_element_by_css_selector

        下面是查找多个元素(这些方法将返回一个列表):

find_elements_by_name

find_elements_by_xpath

find_elements_by_link_text

find_elements_by_partial_link_text

find_elements_by_tag_name

find_elements_by_class_name

find_elements_by_css_selector

除了上面给出的公共方法,这里也有两个在页面对象定位器有用的私有方法。这两个私有方法是find_element和find_elements。

常用方法是通过xpath相对路径进行定位,同时CSS也是比较好的方法。举例:

[html] view plain copy

<html>

<body>

<form id="loginForm">

<input name="username" type="text" />

<input name="password" type="password" />

<input name="continue" type="submit" value="Login" />

<input name="continue" type="button" value="Clear" />

</form>

</body>

<html>

        定位username元素的方法如下:

[python] view plain copy

username = driverfind_element_by_xpath("//form[input/@name='username']")

username = driverfind_element_by_xpath("//form[@id='loginForm']/input[1]")

username = driverfind_element_by_xpath("//input[@name='username']")

        [1] 第一个form元素通过一个input子元素,name属性和值为username实现

        [2] 通过id=loginForm值的form元素找到第一个input子元素

        [3] 属性名为name且值为username的第一个input元素

二 *** 作元素方法

在讲述完定位对象(locate elements)之后我们需要对该已定位对象进行 *** 作,通常所有的 *** 作与页面交互都将通过WebElement接口,常见的 *** 作元素方法如下:

clear 清除元素的内容

send_keys 模拟按键输入

click 点击元素

submit 提交表单

举例自动访问FireFox浏览器自动登录163邮箱。

[python] view plain copy

from selenium import webdriver

from seleniumwebdrivercommonkeys import Keys

import time

# Login 163 email

driver = webdriverFirefox()

driverget("")

elem_user = driverfind_element_by_name("username")

elem_userclear

elem_usersend_keys("15201615157")

elem_pwd = driverfind_element_by_name("password")

elem_pwdclear

elem_pwdsend_keys("")

elem_pwdsend_keys(KeysRETURN)

#driverfind_element_by_id("loginBtn")click()

#driverfind_element_by_id("loginBtn")submit()

timesleep(5)

assert "baidu" in drivertitle

driverclose()

driverquit()

        首先通过name定位用户名和密码,再调用方法clear()清除输入框默认内容,如“请输入密码”等提示,通过send_keys("")输入正确的用户名和密码,最后通过click()点击登录按钮或send_keys(KeysRETURN)相当于回车登录,submit()提交表单。

        PS:如果需要输入中文,防止编码错误使用send_keys(u"中文用户名")。

三 WebElement接口获取值

通过WebElement接口可以获取常用的值,这些值同样非常重要。

size 获取元素的尺寸

text 获取元素的文本

get_attribute(name) 获取属性值

location 获取元素坐标,先找到要获取的元素,再调用该方法

page_source 返回页面源码

drivertitle 返回页面标题

current_url 获取当前页面的URL

is_displayed() 设置该元素是否可见

is_enabled() 判断元素是否被使用

is_selected() 判断元素是否被选中

tag_name 返回元素的tagName

DataFrame对象:二维表数据结构,由行列数据组成的表格

常用index表示行,columns表示列

'''

  语文  数学  英语

0  110  105    99

1  105    88  115

2  109  120  130

'''

# print(dfcolumns)  # Index(['语文', '数学', '英语'], dtype='object')

# print(dfindex)  # Int64Index([0, 1, 2], dtype='int64')

# 遍历DataFrame数据的每一列

'''

0    110

1    105

2    109

Name: 语文, dtype: int64

0    105

1    88

2    120

Name: 数学, dtype: int64

0    99

1    115

2    130

Name: 英语, dtype: int64

'''

1创建一个DataFrame对象

pandasDataFrame(data,index,columns,dtype,copy)

# data表示数据,可以是ndarray数组,series对象、列表、字典等

# index表示行标签(索引)

# columns表示列标签(索引)

# dtype每一列数据的数据类型

# copy用于复制数据

# 返回值DataFrame

通过二维数组创建成绩表

'''

  语文  数学  英语

0  110  105    99

1  105    88  115

2  109  120  130

'''

2通过字典创建DataFrame对象

value值只能是一维数组或单个的简单数据类型

# 数组,则要求所有的数组长度一致

# 单个数据,每行都需要添加相同数据

'''

  语文  数学  英语    班级

0  110  105  109  高一7班

1  105    88  120  高一7班

2    99  115  130  高一7班

'''

'''

DataFrame属性

values 查看所有元素的值  dfvalues

dtypes 查看所有元素的类型  dfdtypes

index 查看所有行名、重命名行名  dfindex    dfindex=[1,2,3]

columns 查看所有列名、重命名列名  dfcolumns  dfcolumns=['语','数']

T 行列数据转换  dfT

head 查看前n条数据,默认5条                dfhead()  dfhead(10)

tail 查看后n条数据,默认5条                dftail()  dftail(10)

shape 查看行数和列数,[0]表示行,[1]表示列    dfshape[0]  dfshape[1]

info 查看索引,数据类型和内存信息    dfinfo

DataFrame函数

describe 查看每列的统计汇总信息,DataFrame类型  dfdescribe()

count    返回每一列中的非空值的个数              dfcount()

sum      返回每一列和和,无法计算返回空值      dfsum()

max      返回每一列的最大值                dfmax()

min      返回每一列的最小值                dfmin()

argmax  返回最大值所在的自动索引位置        dfargmax()

argmin  返回最小值所在的自动索引位置        dfargmin()

idxmax  返回最大值所在的自定义索引位置      dfidxmax()

idxmin  返回最小值所在的自定义索引位置      dfidxmin()

mean    返回每一列的平均值                dfmean()

median  返回每一列的中位数                dfmedian()

var      返回每一列的方差                  dfvar()

std      返回每一列的标准差  dfstd()

isnull  检查df中的空值,空值为True,否则为False,返回布尔型数组  dfisnull()

notnull  检查df中的空值,非空值为True,否则为False,返回布尔型数组  dfnotnull()

中位数又称中值,是指按顺序排列的一组数据中居于中间位置的数

方差用于度量单个随机变量的离散程序(不连续程度)

标准差是方差的算术平方根,反映数据集的离散程度

'''

3 导入xls或xlsx文件

# pandasread_excel(io,sheetname=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrow=None,na_values=None,keep_defalut_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,conver_float=True,mangle_dupe_cols=True,kwds)

'''

io 字符串,xls或xlsx文件路径或类文件对象

sheet_name:None、字符串、整数、字符串列表或整数列表,默认值为0

    字符串用于工作表名称;整数为索引,表示工作表位置

    字符串列表或整数列表用于请求多个工作表,为None时则获取所有的工作表

    sheet_name = 0 第一个Sheet页中的数据作为DataFrame对象

    sheet_name = 1 第二个Sheet页中的数据作为DataFrame对象

    sheet_name = 'Sheet1' 名为Sheet1的Sheet页中的数据作为DataFrame对象

    sheet_name = [0,1,'Sheet3'] 第一个,第二个和名为Sheet3的Sheet页中的数据作为DataFrame对象

header:指定作为列名的行,默认值为0,即取第一行的值为列名。或数据不包含列名,则为header=None

names:默认值为None,要使用的列名列表

index_col:指定列为索引列,默认值为None,索引0是DataFrame对象的行标签

usecols:int、list或字符串,默认值为None

    如为None,则解析所有列

    如为int,则解析最后一列

    如为list列表,则解析列号和列表的列

    如为字符串,则表示以逗号分隔的Excel列字母和列范围列表

squeeze:布尔值,默认为False,如果解析的数据只包含一列,则返回一个Series

dtype:列的数据类型名称为字典,默认值为None

skiprows:省略指定行数的数据,从第一行开始

skipfooter:省略指定行数的数据,从尾部数的行开始

4导入指定Sheet页的数据

# sheet_name=0表示第一个sheet页的数据,以此类推,如果不指定,则导入第一页

5指定行索引导入Excel数据

'''

Empty DataFrame

Columns: []

Index: [1, 3, 5]

'''

# 导入第一列数据

'''

Empty DataFrame

Columns: []

Index: [1, 3, 5]

'''

本文主要围绕以xpath和lxml库进行展开:

一、xpath 概念、xpath节点、xpath语法、xpath轴、xpath运算符

二、lxml的安装、lxml的使用、lxml案例

一、xpath

1xpath概念

XPath 是一门在 XML 文档中查找信息的语言。XPath 使用路径表达式在 XML 文档中进行导航 。XPath 包含一个标准函数库 。XPath 是 XSLT 中的主要元素 。XPath 是一个 W3C 标准 。

2xpath节点

xpath有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

节点关系:父、子、兄弟、先辈、后辈。

3xpath语法

xpath语法在W3c网站上有详细的介绍,这里截取部分知识,供大家学习。

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。下面列出了最有用的路径表达式:

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

XPath 通配符可用来选取未知的 XML 元素。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

通过在路径表达式中使用"|"运算符,您可以选取若干个路径。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

4xpath 轴

轴可定义相对于当前节点的节点集。

5xpath运算符

下面列出了可用在 XPath 表达式中的运算符:

好了,xpath的内容就这么多了。接下来我们要介绍一个神器lxml,他的速度很快,曾经一直是我使用beautifulsoup时最钟爱的解析器,没有之一,因为他的速度的确比其他的htmlparser 和html5lib快了许多。

二、lxml

1lxml安装

lxml 是一个xpath格式解析模块,安装很方便,直接pip install lxml 或者easy_install lxml即可。

2lxml 使用

lxml提供了两种解析网页的方式,一种是你解析自己写的离线网页时,另一种 则是解析线上网页。

导入包:

1解析离线网页:

2解析在线网页:

那么我们怎么获取这些标签和标签对应的属性值了,很简单,首先获取标签只需你这样做:

然后我们可以,比方说,你要获取a标签内的文本和它的属性href所对应的值,有两种方法,

1表达式内获取

2表达式外获取

这样就完成了获取,怎么样,是不是很简单了,哈哈哈。

下面再来lxml的解析规则:

3lxml案例

为了偷懒,我决定还是采用urllib那篇文章的代码,哈哈哈,机智如我。

python常见的内置函数有:

1 abs()函数返回数字的绝对值。

2 all() 函数用于判断给定的参数中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、None、False 外都算 True;空元组、空列表返回值为True。

3 any() 函数用于判断给定的参数是否全部为False,是则返回False,如果有一个为True,则返回True。 元素除了是 0、空、False外都算 TRUE。

4 bin()函数返回一个整数int或者长整数long int的二进制表示。

5 bool() 函数用于将给定参数转换为布尔类型,如果参数不为空或不为0,返回True;参数为0或没有参数,返回False。

6 bytearray()方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256(即0-255)。即bytearray()是可修改的二进制字节格式。

7 callable()函数用于检查一个对象是否可调用的。对于函数、方法、lambda函式、类以及实现了 __call__ 方法的类实例, 它都返回 True。(可以加括号的都可以调用)

8 chr()函数用一个范围在range(256)内(即0~255)的整数作参数,返回一个对应的ASCII数值。

9 dict()函数用来将元组/列表转换为字典格式。

10 dir()函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。

扩展资料:

如何查看python36的内置函数?

1、首先先打开python自带的集成开发环境IDLE;

2、然后我们直接输入"dir(__builtins__)",需要注意的是builtins左右的下划线都是两个;

3、回车之后我们就可以看到python所有的内置函数;

4、接下来我们学习第二种查看python内置函数的方法,我们直接在IDLE中输入"import builtins",然后输入"dir(builtins)";

5、然后回车,同样的这个方法也可以得到所有的python内置的函数;

6、这里我们可以使用python内置函数len()来查看python内置函数的个数,这里我们直接输入"len(dir(builtins))";

7、回车之后我们可以看到系统返回值153,说明我们现在这个版本中有153个内置函数;

8、最后我们介绍一个比较有用的内置函数"help",python内置函数有一百多个,我们当然不能记住所有的函数,这里python提供了一个"help"函数,我们来看一个例子一起来体会一下help函数的用法,这里我们直接输入"help(len)",然后回车,会看到系统给我们对于内置函数"len"的解释,当然对于其他函数可能会有更加详细的解释以及用法提示。

以上就是关于python+appium如何获取元素内容的颜色全部的内容,包括:python+appium如何获取元素内容的颜色、python爬虫简单问题,HTML对象的定位问题、python数据分析2:DataFrame对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10171259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存