.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true);//类中的成员变量为
一、前言 最近小编在开发中遇到个问题,就是关于枚举方面的使用。一些固定不变的数据我们可以通过枚举来定义,减少对数据库的查询。是一种常见的开发技巧!...常见场景的需求是:通过某一个属性获取对应的枚举属性的另一个值;还有就是常量枚举,比如一下统一返回状态和编码! ==小编的需求是把枚举中的所有属性都取出来,转成实体类那种返回给前端!...== 最简单的解决就是拿到所有的然后便利加到新的集合里,这样还需要定义一个实体类来接收转一下!...这样有点麻烦,小编也是无意发现了,项目中有以前大佬留下来的一个注解@JSONType(serializeEnumAsJavaBean = true),一加上只需要我们使用枚举.values()即可直接帮助我们返回了..."秋" }, { "code": "004", "name": "冬" } ] 六、总结 这样就完美完成枚举转实体类了,而且还没有新增实体类,一个注解解决哈
XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。XPath 定位和CSS定位相比有更大的灵活性。...[last()]:表示 form 下的最后一个 div //form/div[last()-1]:表示 form 下的倒数第二个 div 具体步骤: 在被测试百度网页中,按照宏哥在上卷中5.2中的方法...5.3使用页面属性定位 标签属性定位,相对比较简单,也要求属性能够定位到唯一一个元素,如果存在多个相同条件的标签,默认只是第一个,具体格式: xxx.By.xpath("//标签[@属性='属性值']"...']") (2)当标签属性很少,不足以唯一区别元素时,但是标签中间中间存在唯一的文本值,也可以定位,其具体格式 xxx.By.xpath("//标签[contains(text(),'文本值')]")...attribute 选取当前节点的所有属性 //img[@alt=’div2-img2’]/ attribute::* 查找alt属性值为div2-img的图片并返回该节点下的所有属性节点 child
由于存在大量标签,并且重复性高,因此必须确定其能够代表目标元素唯一性后,方可使用。如果页面中存在多个相同标签,默认返回第一个标签元素。...,也就是a标签的部分文本内容,如果使用模糊匹配最好使用能代表唯一的关键词,如果有多个元素,默认返回第一个。...): 通过元素属性定位 单个属性 使用目标元素的任意一个属性和属性值(需保证唯一性)。...注意: 使用 XPath 策略,建议先在浏览器开发者工具中根据策略语法,组装策略值,测试验证后再放入代码中使用。 目标元素的有些属性和属性值可能存在多个相同特征的元素,需注意唯一性。...,解决单个属性和属性值无法定位元素唯一性的问题。
文章目录 匹配某节点下的所有`.//` 匹配包含某属性的所有的属性值`//@lang` 选取若干路径`|` Axes(轴) position定位 条件 函数 数值比较 将对象还原为字符串 选取一个属性中的多个值...匹配包含某属性的所有的属性值//@lang print tree.xpath('//@code') #匹配所有带有code属性的属性值 >>['84', '104', '223'] 选取若干路径| 这个符号用于在一个...id属性的div标签下所有的li中第一个li的text属性 >>print tree.xpath('//div[@id="testid"]/following::div[not(@id)]/....h2标签中text值为`这里是个小标题` >>print tree.xpath(u'//h2[text()="这里是个小标题"]/text()')[0] >>这里是个小标题 //选择A/B/C的最后一个...但是我们又想要把只有两个标签的父节点也记为三个子节点,并且把它最后一个节点的值记为None。可通过伪造的第三个标签和第二个标签比较,判断是不是应该为None。
回到上一个节点 @ 选取属性 xpath(’//@calss’) 选取所有的class属性 谓语 表达式 结果 xpath(‘/body/div[1]’) 选取body下的第一个div节点 xpath.../attribute::*’) 选取当前节点的所有属性 child xpath(‘./child::*’) 返回当前节点的所有子节点 descendant xpath(‘..../descendant::*’) 返回当前节点的所有后代节点(子节点、孙节点) following xpath(‘....1.png 使用xpath中,多结合功能函数和谓语的使用可以减少提取信息的难度 总结 节点的遍历 属性的提取 文本的提取 pyquery 可以让你用jquery语法来对xml进行查询 基本概念 ?...我比较属性的是xpath, 然而当我接触到pyquery看下文档就差不多也能获取到自己需要的网页内容,接下来关键是熟悉的过程。 参考 pyquery css选择器 xpath
href 属性,注意此处和属性匹配的方法不同,属性匹配是中括号加属性名和值来限定某个属性,如 [@href="link1.html"],而此处的 @href 指的是获取节点的某个属性,二者需要做好区分...(@class, "li")]/a/text()') print(result) 这样我们通过 contains() 方法,第一个参数传入属性名称,第二个参数传入属性值,这样只要此属性包含所传入的属性值就可以完成匹配了...)') print(result) 第一次选择我们选取了第一个 li 节点,中括号中传入数字1即可,注意这里和代码中不同,序号是以 1 开头的,不是 0 开头的。...第二次选择我们选取了最后一个 li 节点,中括号中传入 last() 即可,返回的便是最后一个 li 节点。...第三次选择我们调用了 attribute 轴,可以获取所有属性值,其后跟的选择器还是 *,这代表获取节点的所有属性,返回值就是 li 节点的所有属性值。
注意,此处和属性匹配的方法不同,属性匹配是中括号加属性名和值来限定某个属性,如 [@href="link1.html"],而此处的 @href 指的是获取节点的某个属性,二者需要做好区分。...('//li[contains(@class, "li")]/a/text()') print(result) 这样通过 contains 方法,第一个参数传入属性名称,第二个参数传入属性值,只要此属性包含所传入的属性值...注意,这里和代码中不同,序号是以 1 开头的,不是以 0 开头。 第二次选择时,我们选取了最后一个 li 节点,中括号中调用 last 方法即可,返回的便是最后一个 li 节点。...其后需要跟两个冒号,然后是节点的选择器,这里我们直接使用 *,表示匹配所有节点,因此返回结果是第一个 li 节点的所有祖先节点,包括 html、body、div 和 ul。...第三次选择时,我们调用了 attribute 轴,可以获取所有属性值,其后跟的选择器还是 *,这代表获取节点的所有属性,返回值就是 li 节点的所有属性值。
在Selenium WebDriver中查找元素:“ FindElement”和“ FindElements”之间的区别 查找元素 查找元素 如果定位器发现了多个Web元素,则返回第一个匹配的Web元素...返回匹配的Web元素列表 如果找不到元素,则抛出NoSuchElementException 如果找不到匹配的元素,则返回一个空列表 此方法仅用于检测唯一的Web元素 此方法用于返回匹配元素的集合。...有多种方法可以唯一地标识网页中的一个Web元素,例如ID,名称,类名,链接文本,部分链接文本,标记名和XPATH。...如果任何网站具有非唯一ID或具有动态生成的ID,则不能使用此策略唯一地查找元素,而是将返回与定位器匹配的第一个Web元素。我们将如何克服这种情况,将在XPATH / CSS选择器策略中进行说明。...// 遍历列表并执行单个元素的逻辑 }} 现在让我们了解如何使用TagName在Selenium中查找元素。
根据xpath定位 driver.find_element_by_xpath() 元素定位 find_element_by_xxx符合条件的第一个元素,找不到抛出异常 find_elements_by_xxx...符合条件的所有元素的列表,找不到返回空列表 通过WebDriver查找范围是整个界面的树形结构 通过WebElement查找的是该节点的子节点 通过id定位元素find_element_by_id 元素的...通过class_name定位元素find_element_by_class_name clsaa属性决定了界面元素的类型 如果我们要查找某种类型的界面元素,且该类型界面元素在当前界面中只有一个,则可以使用此方法...index和界面图标不同 首先,根据id定位可唯一判断的元素 然后,找到此唯一元素下级目录汇总class属相对应元素 最后,取出列表中自己想要的值 注:index从0开始计算,xpath从1开始计算 #...单位是秒 # 根据id找到元素,并点击,id和 html 元素的id不同 driver.find_element_by_id("io.manong.developerdaily:id/
XPath简介 XPath是W3C的一个标准。它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计。目前有XPath1.0和XPath2.0两个版本。...XPath是一种表达式语言,它的返回值可能是节点,节点集合,原子值,以及节点和原子值的混合等。XPath2.0是XPath1.0的超集。...根节点(/*): 这里的*是代表所有节点,但是根元素只有一个,所以这里表示根节点。/*的返回结果和/messages返回的结果一样都是messages节点。...() 第一个message节点下的所有子节点 /messages/message[1]/*[last()] 第一个message节点的最后一个子节点 /messages/message[1]/[last.../messages/message[1]/sender/following::* 查找第一个message节点的sender节点后的所有同级节点,并对每一个同级节点递归向下查找。
使用这些方法中的任何一种,都可以将输入XML文档指定为第一个参数,并接收%XML.XPATH.Document的一个实例作为输出参数。这一步使用内置的XSLT处理器解析XML文档。...该属性旨在为源文档中的每个默认名称空间提供唯一的前缀,以便XPath表达式可以使用这些前缀,而不是使用完整的名称空间URI。...该列表中的每个项目都有一个Type属性,该属性具有下列值之一: $$$XPATHDOM-指示该项包含XML文档的子树。此项目是%XML.XPATH.DOMResult实例,提供导航和检查子树的方法。...或者,可以调用MoveToElement()方法返回到包含当前属性的元素。这里描述的所有方法都在文档中前进,但Rewind()方法除外,它导航到文档的开头并重置所有属性。...: #text Value: Yao Xin计算具有标量结果的XPath表达式下面的类方法读取XML文件并计算返回标量结果的XPath表达式:/// 计算返回值结果的XPath表达式/// d ##class
appium中,IOS和Android元素定位方法有些不同。...1,accessibility_id 替代以前的name定位方式,在 iOS 上,主要使用元素的label或name(两个属性的值都一样)属性进行定位,如该属性为空,也是不能使用该属性。...在 iOS 的 UI 自动化中,使用原生支持的Predicate定位方式是最好,可支持元素的单个属性和多个属性定位,强烈推荐使用。...= 可用于数值和字符串的比较: 如:value>100 或value == 'ClearEmail' 或 value !...最后给个建议: 1 选择定位方式的判断: 如果显示在界面的文本唯一或是第一个出现:使用accessibility 如果class唯一或是第一个出现:className ID或class不方便定位,控件属性有明确的匹配规则
要建立一个Spider,你必须用scrapy.spider.BaseSpider创建一个子类,并确定三个强制的属性: name:爬虫的识别名称,必须是唯一的,在不同的爬虫中你必须定义不同的名字。...parse():解析的方法,调用的时候传入从每一个URL传回的Response对象作为唯一参数,负责解析并匹配抓取的数据(解析为item),跟踪更多的URL。...我们注意到xpath返回了一个对象列表, 那么我们也可以直接调用这个列表中对象的属性挖掘更深的节点 (参考:Nesting selectors andWorking with relative XPaths...in the Selectors): 3.4xpath实战 我们用shell做了这么久的实战,最后我们可以把前面学习到的内容应用到dmoz_spider这个爬虫中。...前面我们说过,Item 对象是自定义的python字典,可以使用标准字典语法获取某个属性的值: 作为一只爬虫,Spiders希望能将其抓取的数据存放到Item对象中。
,有些文本链接会比较长,这个时候可以取文本链接的一部分进行定位,只要这一部分信息可以唯一地标识这个链接。...用xpath不局限与id,name,class等属性,元素的任意属性值都可以使用,只要它能唯一的标识一个元素。...]") find_element_by_xpath("//input[@type='submit']") xpath-利用层级和属性结合起来定位 如果一个元素本身没有可以唯一标识这个元素的属性值,那么我们可以往上找其对应的其他层级是否有可以唯一标识属性的值...") xpath-使用逻辑运算符连接多个属性值定位 如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素。...这几个方法在element后面加了一个s,能够定位多个属性相同的元素,返回的是一个元素对象的数组,定位不到时,返回的是一个空数组,不会报元素找不到的异常。
Web UI自动化中,定位方式的优先级 优先级最高:ID 优先级其次:name 优先级再次:CSS selector 优先级再次:Xpath 针对css selector和xpath的优先级做一个简单的说明...3:前端开发主要是使用css,不使用xpath,所以在技术上面,我们可以获得帮助的机会非常多 定位元素的注意事项(划重点) 找到待定位元素的唯一属性 如果该元素没有唯一属性,则先找到能被唯一定位到的父元素.../子元素/相邻元素,再使用 等进行辅助定位 > , " " , + 不要使用随机唯一属性定位 最重要的是多跟研发沟通,尽量把关键元素加上ID或者name,并减少不合理的页面元素,例如重复ID这样的事情最好不要发生...[attribute|=value] [lang|=en] 选择 lang 属性值以 "en" 开头的所有元素。...后续兄弟选择器 */ #down~li { color: #cc0000; } 然后,伪类选择器 选择器 例子 例子描述 :first-child p:first-child 选择属于父元素的第一个子元素的每个
1.9 __RandomDate 返回给定开始日期和结束日期值之间的随机日期 3.3 _RandomString 根据给定的字符生成指定长度的随机字符串 2.6 __UUID 通用唯一标识符函数...当两个分隔符中间没有字符时,返回 ?。 被拆分出来的字符串,保存在变量中,类似这样:{VAR_1}, {VAR_2} ...,总个数是 如果最后一个字符是分隔符,也会返回 ?。...例如,,这样就会将链 接的值存放到第一个匹配组合中(这里只有一个匹配组合)。...${__property(abcd,ABCD,atod)} 返回属性 abcd 的值,如果该属性未定义则返回 atod,并保存在变量 ABCD 中。...,并返回下一个 name 属性的内容。
这两种方式内容非常多,又比较深奥,如果有人不想努力了,倒是有偷懒方法,在目标元素上右键,Copy selector(获取css selector表达式)和Copy XPaht(获取xpath表达式):...在xpath中可以使用属性和属性的值来定位元素,使用属性定位时要以@开头(下面form仅为示例,也可以为div、input等) //form[@id]:表示所有具有属性id的form元素。...//input[contains(@id,'myId')]:表示所有属性id的值包含myId的form元素。...属性class为s_ipt_wr的span元素的第一个input类型的元素(该input元素在所有子元素排第几无所谓):By.cssSelector(“span[class~=‘s_ipt_wr’] >...input:first-of-type”) 属性class为s_ipt_wr的span元素的最后一个input类型的元素(该input元素在所有子元素排第几无所谓):By.cssSelector(
: 把属性选择器不放在css选择器里面是因为jQuery中写法是不一样的.至于css中写法可以参考我之前写的一篇css的选择器一文.jQuery中是和xPath类似的写法: $("mix[@attr]"...):选取所有该mix且具有attr属性的节点 $("mix[@attr=a_value"]):选取所有该mix且具有attr属性并满足属性值为a_value的节点 $("mix[@attr^=a_value_head...:是其父元素的最后一个类型为E的子元素 E:only-child:且是其父元素的唯一一个类型为E的子元素 E:empty:没有子元素(包括text节点)的类型为E的元素 E:enabled E:disabled...可以写做$() $(选择器部分,选择器来源):这个举例说明 $("input:radio",document.forms[0]):在文档的第一个表单中,搜索所有单选按钮 $("div",xml.responseXML...$("img").each(function(i){ this.src = "test" + i + ".jpg"; });//迭代图像,并设置它们的src属性 get():如果没有参数,返回所有,是一个对象数组
XPath 可用来在XML文档中对元素和属性进行遍历。 XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。...//* 选取文档中的所有元素。 //title@* 选取所有带有属性的 title 元素。...选取文档中(//)的所有 title 和 price 元素。.../bookstore/booklast() 选取属于 bookstore 子元素的最后一个 book 元素。...XPath运算符 XPath 表达式可返回节点集、字符串、逻辑值以及数字 下面列出了可用在 XPath 表达式中的运算符: 运算符 描述 实例
领取专属 10元无门槛券
手把手带您无忧上云