首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我有一个基于4个值的动态xpath,如果我使用OR条件,xpath看起来很大,有没有其他方法来处理这个问题?

对于基于4个值的动态xpath,如果使用OR条件,xpath会变得很大,可以考虑使用XPath函数来处理这个问题。

XPath函数是一种在XPath表达式中使用的内置函数,可以对节点进行计算、筛选和转换。以下是一些常用的XPath函数:

  1. contains()函数:用于判断一个字符串是否包含另一个字符串。可以使用该函数来简化OR条件的判断。例如,contains(@属性, '值1') or contains(@属性, '值2') or contains(@属性, '值3') or contains(@属性, '值4')可以简化为contains(@属性, '值1|值2|值3|值4')
  2. starts-with()函数:用于判断一个字符串是否以另一个字符串开头。可以使用该函数来进一步简化OR条件的判断。
  3. matches()函数:用于判断一个字符串是否匹配一个正则表达式。可以使用该函数来更灵活地处理OR条件。

通过使用这些XPath函数,可以将复杂的OR条件简化为一个更简洁的表达式,从而减小xpath的大小。

另外,还可以考虑使用CSS选择器来代替XPath。CSS选择器是一种用于选择HTML元素的语法,可以通过元素的属性、层级关系等进行选择。相比于XPath,CSS选择器更简洁、易读。可以使用一些库或工具,如BeautifulSoup、Jsoup等,将CSS选择器转换为XPath。

总结起来,处理基于多个值的动态xpath时,可以考虑使用XPath函数来简化OR条件的判断,或者使用CSS选择器代替XPath。这样可以减小xpath的大小,提高代码的可读性和维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DOM编程

DOM(Document Object Model)文档对象模型,是语言和平台中立接口。。 允许程序和脚本动态地访问和更新文档内容。 为什么要使用DOM?...Dom技术使得用户页面可以动态地变化,如可以动态地显示或隐藏一个元素,改变它们属性,增加一个元素等,Dom技术使得页面的交互性大大地增强。...总的来说就是:添加、替换、删除子节点,判断是否子节点,克隆子节点 ---- document HTMLDOM中我们提到并大量使用了document这个Javascirpt内置对象,请注意这个对象仅仅可以表示...现在问题就是,IE和fireFox装载XML方式是不一样。因此,我们最好封装成一个方法来装载XML。.../[条件])【或关系】 我们之前使用dom4j时候,是调用selectSingleNode()和selectNodes()方法来获取任意深度节点或多个节点 我们想要在JavaScript中使用XPATH

1.3K70

什么是DOM编程?(修订版)

DOM(Document Object Model)文档对象模型,是语言和平台中立接口。。 允许程序和脚本动态地访问和更新文档内容。 为什么要使用DOM?...Dom技术使得用户页面可以动态地变化,如可以动态地显示或隐藏一个元素,改变它们属性,增加一个元素等,Dom技术使得页面的交互性大大地增强。...这里写图片描述 总的来说就是:添加、替换、删除子节点,判断是否子节点,克隆子节点 ---- document HTMLDOM中我们提到并大量使用了document这个Javascirpt内置对象...现在问题就是,IE和fireFox装载XML方式是不一样。因此,我们最好封装成一个方法来装载XML。...】 多条件查询节点:(先找到元素节点/[条件]|先找到元素节点/[条件])【或关系】 我们之前使用dom4j时候,是调用selectSingleNode()和selectNodes()方法来获取任意深度节点或多个节点

1.4K20
  • 🔥《手把手教你》系列基础篇之4-python+ selenium自动化测试-xpath使用(详细教程)

    我们大部分时候需要去步骤2中,找出能够识别这个唯一元素节点信息。刚好上面通过id=kw只能找到一个匹配元素,说明这个XPath可用,看起来也简洁。...JD首页左侧电脑菜单举例 XPath写法推荐,这里用contains()方法来定位 这里href = //diannao.jd.com, 如果觉得这个href太长,只取关键字diannao,利用...有时候,如果这个id不能作为参考,我们需要利用相对定位方法来定位这个新闻标题前面的单选按钮; 1)先根据value = google_web 或者text()=谷歌来定位“谷歌”这个标签。...当然,使用 XPath 不仅仅只局限在 id、name 和 class 这三个属性,元素任意属性都可以使用,只要它能唯一标识一个元素。...,如果上级 可以唯一标识属性,也可以拿来使用

    1K50

    🔥《手把手教你》系列基础篇之4-python+ selenium自动化测试-xpath使用(详细教程)

    我们大部分时候需要去步骤2中,找出能够识别这个唯一元素节点信息。刚好上面通过id=kw只能找到一个匹配元素,说明这个XPath可用,看起来也简洁。...JD首页左侧电脑菜单举例 XPath写法推荐,这里用contains()方法来定位 这里href = //diannao.jd.com, 如果觉得这个href太长,只取关键字diannao,利用...有时候,如果这个id不能作为参考,我们需要利用相对定位方法来定位这个新闻标题前面的单选按钮; 1)先根据value = google_web 或者text()=谷歌来定位“谷歌”这个标签。...当然,使用 XPath 不仅仅只局限在 id、name 和 class 这三个属性,元素任意属性都可以使用,只要它能唯一标识一个元素。...,如果上级 可以唯一标识属性,也可以拿来使用

    1.1K30

    利用pthon爬虫和数据分析在618抢购Macbook pro

    涉及面 爬虫中阶知识,因为涉及到动态页面抓取,一个页面对不同型号进行点击操作,之后再获取元素,使用了phantomjs包 python字符串处理中阶知识,涉及到数据清洗,重构,还有缺失填充,这次没用...流程和以前动态页面抓取一致,选择需要url之后进行元素点击操作,目的是为了选中需要比较价格机型,这都么问题以前写过很多关于phantomjs和selenium动态页面处理博客,大家如果只是想参考代码...A: 解决方法,额,是每天看一下log,看看有没有不正常,不正常就kill任务然后修改位置,再接着跑,一般来说,商家不会闲着无聊去修改位置,另一个解法是对之后结果手动清洗,如果价格与之前价格差值大过一定范围...,则直接认为是噪声数据,毕竟,怎么可能价格涨跌超过1000呢,还有一个解法是,确定点击元素代表是什么型号,然后点击价格就是什么型号了,这个懒得做了。。。。...最后目的是获取价格变动时间戳,不管哪家变动,都获取,然后把都给选出来,这里一些问题是脏数据处理,还有就是阈值设定,毕竟某东优惠券是800这个幅度,,,, ? ? ? ?

    2.3K70

    Python带你薅羊毛:手把手教你揪出最优惠航班信息

    请各位大佬读者注意,写这篇文章并不是为了展示什么新技术。没错,已经更先进方法来寻找更便宜机票,然而我只希望文章能给读者带来一些简单而实用东西。...今天例子中,选择用 XPath 来定位页面上元素,因为觉得这个例子里并不是太需要用到 CSS——当然,如果你能做到混合使用 CSS 来进行定位,那当然更完美。...这个函数还返回一个数据表对象 flights_df 以便我们可以把各种不同排序结果分门别类,并最后整合在一起。 试着让变量名看起来比较清晰易懂一些。...如果搜索不含有弹性日期的话,就不会有一个对照表对象出现在页面上,那么你这段代码就可能会出问题使用 Outlook 帐户(hotmail.com)进行了一下电子邮件发送测试。...对于学有余力读者,可以考虑一下如何改进我们这段简单小程序,比如我想到使用微信机器人,把搜索结果文字通过微信发给你自己;使用 V** 或是其他更隐蔽方式从多个服务器同时获取搜索结果;把保存搜索结果

    1.3K20

    (数据科学学习手札50)基于Python网络数据采集-selenium篇(上)

    url地址来更改页面的方式失效,这一部分,在(数据科学学习手札47)基于Python网络数据采集实战(2)中爬取马蜂窝景点页面下蜂蜂点评区域用户评论内容时候,也详细介绍过,但之前在所有爬虫相关文章中介绍内容...,而是基于网页自身CSS结构,其实selenium中对网页元素进行定位方式非常多,但是通过大量实践,其中很多方法效果并不尽如人意,唯有其中基于xpath定位方法十分方便,定位非常准确方便,因此本文不会浪费你时间介绍其他效果不太好方法...路径表达式即可;   xpath使用路径表达式来识别xml文档中节点或节点集,我们先从一个示例出发来对xpath路径表达式一个认识:   还是以马蜂窝游记页面为例: from selenium import...[]:指定最末端结点属性 @:在[]中指定属性名称和对应属性   在xpath路径表达式中还有很多其他内容,但在selenium中进行基本元素定位了解到上面这些规则就可以了,所以我们上面的例子中规则...,快速加载图片比较吃网速和内存''' for i in range(1, 20): '''这里使用一个错误处理机制, 如果有定位到加载下一页按钮就进行 点击下一页动作,否则继续每隔

    1.8K50

    七、Selenium与phantomJS----------动态页面模拟点击、网站模拟登录 每天一个小实例1(动态页面模拟点击,并爬取你想搜索职位信息) 每天一个小实例2(模拟网站登录)

    如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大网络爬虫了,这个爬虫可以处理 JavaScrip、Cookie、headers,以及任何我们真实用户需要做事情...因为 PhantomJS 是一个功能完善(虽然无界面)浏览器而非一个 Python 库,所以它不需要像 Python 其他库一样安装,但我们可以通过Selenium调用PhantomJS来直接使用。...,并不是显示在下拉框中 15 #visible_text是在option标签文本,是显示在下拉框 当你触发了某个事件之后,页面出现了弹窗提示,处理这个提示或者获取提示信息方法如下: alert...如果实际页面等待时间过长导致某个元素还没出来,但是你代码直接使用这个元素,那么就会抛出NullPointer异常。   ...隐式等待是等待特定时间,显式等待是指定某一条件直到这个条件成立时继续执行。   显式等待:   显式等待指定某个条件,然后设置最长等待时间。如果这个时间还没有找到元素,那么便会抛出异常了。

    2.3K70

    高阶爬虫实战:破解极验滑动验证码

    针对这种验证码我们首先确定了使用selenium模拟滑动破解方式,selenium鼠标移动点击拖动都比较简单,那么问题就在于拖动多少距离,眼睛看起来很直观,但是程序怎么获取呢?利用图像识别.........但是这个坐标是前面url里面的图片坐标,然后就去看了一下图4 ? 这个图片尽然比较大,坐标问题答案了,但是这个跟260什么关系呢?打乱图片比较大,拼好小,那它是怎么拼呢?...它成功引起了注意,因为按照想法,如果是从拼图里拿出一部分拼成一个完成图片的话,那么最左边拿出来图片,应该是从(0,0),(0,58),但是我们看到是(1,0),(1,58),y还是比较符合我们预期...这在后面还好说,如果是在前面呢,那不就计算到阴影里去了嘛。如果这个对比一个容差就好了,以前用按键精灵时候好像就有这种嘛,这个好不智能呀。...一种方式就是调试,这种是比较麻烦,还有一种方式就是获取多张图片,全图和缺陷图,然后使用取色工具,取对应位置颜色,确定一个大概范围。

    2.9K72

    自动化测试面试题及答案大全(5)「建议收藏」

    我们一般最重要就是使用webdriver。 5.Selenium什么限制或者缺陷 除了基于web软件和mobile程序,selenium不支持桌面软件自动化测试。...还有一个可能和这个问题相关面试题,如果页面元素经常发生需求变化,你是如何做,答案就是采用POM思想。好处就是只要该一个页面,就去修改这个页面对象元素定位和相关方法,脚本不需要修改。...,例如ck编辑器,动态表格等 14.举例一下你遇到过那些异常,在selenium自动化测试过程中 通过这个问题,大概知道你写过多少脚本。...alert弹窗 我们常见alert弹窗两种:基于windows弹窗和基于web页面弹窗 我们知道,webdriver是能够处理alert弹窗,Selenium提供了Alert这个接口。...如果这种方法不能实现上传,我们就可能需要借助第三方工具,用过一个第三方工具叫autoIT. 还有一个方法是利用robot类 27.如何处理“不受信任证书”问题

    1.8K30

    Python爬虫(二十一)_Selenium与PhantomJS

    本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据,更多内容请参考:Python学习指南 Selenium Selenium是一个Web自动化测试工具,最初是为网站自动化测试而开发...如果我们把Selenium和PhantomJS结合在一起,就可以运行一个非常强大网络爬虫了,这个爬虫可以处理JavaScript、Cookie、headers,以及任何我们真实用户需要做事情。...() 页面切换 一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口切换,切换窗口方法如下: driver.switch_to_window('this is window name') 也可以使用...如果实际页面等待事件过长导出某个dom元素还没出来,但是你代码直接使用这个WebElement,那么就会抛出NullPointer异常。...隐式等待就是等待特定时间,显示等待是指定某一条件知道这个条件成立时继续执行。 显式等待 显示等待指定了某个条件,然后设置最长等待事件。如果这个时间还找到没有元素,那么便会抛出异常。

    2.6K101

    自动化测试最新面试题和答案

    问题1:Selenium是什么,流行版本哪些? Selenium是基于Web最流行UI自动化测试工具。...怎样才能使用一个端口?...,如ID、名称、XPath、CSS定位器,应该使用一个?...假如一个文本框是一个Ajax控件,当我们输入一些文本时,它会显示自动建议处理这样控件,需要在文本框中输入之后,捕获字符串中所有建议;然后,分割字符串,取值就好了。...显式等待只是用于特定搜索一个计时器。它可扩展性更强,你可以设置它来等待任何条件。通常情况下,可以使用一些预先构建条件来等待元素变得可点击,可见,不可见等,或者只是编写适合需求条件

    5.8K20

    Appium常用操作之「Toast提示信息获取」

    所以在很多版本当中,如果我们要用 Toast,我们就需要指明一个东西:那就是「自动化测试引擎必须指明为 UiAutomator2。」 不然它默认就不用这个,必须自己指明。...「也就是等待时候,要用元素存在条件。不能用元素可见条件。」 driverWait 方法中,请用presence_of_element_located。它存在了就行了,存在了之后再去处理它。...只想通过「手机号码」这个文本匹配来找到它。 可以,但是选取部分内容时候要注意下:除了 xpath 之外,页面上其它元素有没有文本也是「手机号码」。 ?...「Toast 这个问题有些尴尬,如果特别需要 Toast 上面的消息怎么办?可以求助开发,帮你稍微延长一点时间。」 有时能找到 Toast,有时找不到,这里是概率性问题。...4.Toast 获取跟 Appium 版本有关 还有一个问题,Toast 获取时候提示你"应用一些页签啊没有通过",这个也是跟 Appium 版本有关。Toast 这块问题是比较多

    1.2K10

    创建一个分布式网络爬虫故事

    以下为译文: 大概600万条记录,每个记录15个左右字段。 这是数据分析项目要处理数据集,但它记录一个很大问题:许多字段缺失,很多字段要么格式不一致或者过时了。...初始实现 现在一个看起来不错设计,需要选择使用哪些技术。 但别误会意思:目标不是提出一个完美的技术栈。...为了避免这个问题在爬虫程序调度器上使用一个本地SQLite数据库来存储每个已爬过URL,以及与其抓取日期相对应时间戳。...现在有很多方法可以解决这个问题,但我还是选择了一个非常简单解决方案。指定了一些主控制器,让它们只抓取动态生成网页。 在那些主控制器上: 安装了谷歌浏览器和Chrome驱动程序。...其他输出一条错误信息或者看起来无限长堆栈跟踪信息。无论哪种方式,它们都很大

    1.2K80

    极验验证码破解之selenium

    图1 针对这种验证码我们首先确定了使用selenium模拟滑动破解方式,selenium鼠标移动点击拖动都比较简单,那么问题就在于拖动多少距离,眼睛看起来很直观,但是程序怎么获取呢?...图13 这个图片尽然比较大,坐标问题答案了,但是这个跟260什么关系呢?打乱图片比较大,拼好小,那它是怎么拼呢?幸好我们看到了一个比较有用信息 ? ? 看到这个-1px了吗?...它成功引起了注意,因为按照想法,如果是从拼图里拿出一部分拼成一个完成图片的话,那么最左边拿出来图片,应该是从(0,0),(0,58),但是我们看到是(1,0),(1,58),y还是比较符合我们预期...这在后面还好说,如果是在前面呢,那不就计算到阴影里去了嘛。如果这个对比一个容差就好了,以前用按键精灵时候好像就有这种嘛,这个好不智能呀。...一种方式就是调试,这种是比较麻烦,还有一种方式就是获取多张图片,全图和缺陷图,然后使用取色工具,取对应位置颜色,确定一个大概范围。

    1.7K50

    Selenium面试题

    与id有关:id 全能选手:xpath、css_selector 如果存在id,一定使用Id,因为简单方便,定位最快。...先去找该元素不变属性,要是都变,那就找不变父元素,用层级定位(以不变应万变) 属性动态变化也就是指该元素没有固定属性,可以通过: JS实现, 通过相对位置来定位,比如xpath轴,paren...重置元素属性,给定位元素加背景、边框 NO.17 XPath使用单斜杠和双斜杠什么区别? 如果XPath是从文档节点开始,它将允许创建“绝对”路径表达式。...假如一个文本框是一个Ajax控件,当我们输入一些文本时,它会显示自动建议处理这样控件,需要在文本框中输入之后,捕获字符串中所有建议;然后,分割字符串,取值就好了。...显式等待只是用于特定搜索一个计时器。它可扩展性更强,你可以设置它来等待任何条件。通常情况下,可以使用一些预先构建条件来等待元素变得可点击,可见,不可见等,或者只是编写适合需求条件

    5.7K30

    Appium常用操作之「Toast提示信息获取」

    如果想要获取到 Toast 也是要求。 Toast 是什么? UiAutomator Viewer 是抓不到它。即使截屏截到了,用元素定位也是定位不到。所以用正常套路是搞不定它。...「也就是等待时候,要用元素存在条件。不能用元素可见条件。」 driverWait 方法中,请用presence_of_element_located。它存在了就行了,存在了之后再去处理它。...只想通过「手机号码」这个文本匹配来找到它。 可以,但是选取部分内容时候要注意下:除了 xpath 之外,页面上其它元素有没有文本也是「手机号码」。...「Toast 这个问题有些尴尬,如果特别需要 Toast 上面的消息怎么办?可以求助开发,帮你稍微延长一点时间。」 有时能找到 Toast,有时找不到,这里是概率性问题。...4.Toast 获取跟 Appium 版本有关 还有一个问题,Toast 获取时候提示你"应用一些页签啊没有通过",这个也是跟 Appium 版本有关。Toast 这块问题是比较多

    2.4K10

    POI生成word文档完整案例及讲解

    里面可以表格,使用xwpfTableCell.getTables()获取,and so on 在poi文档中段落和表格是完全分开如果在两个段落中有一个表格,在poi中是没办法确定表格在段落中间。...2.1.1,下面就是根据从数据库中取到,判断规则,和json数据做对比,就是json数据中有没有数据库中要。判断规则是xpath规则运算符。...=-1){//存在这个符号,表示需要判断前提条件,@&@,前提条件,需要取字段,单位 //                        String[] methodParamArray = xpath.split...则会通过反射方法来获取数值。 可以看出来只要是input开头都是通过这个方法获取这个主要是为了给替换做准备。...反射逻辑详见 反射一个案例分析 取值逻辑5: 假如上面的4套规则还不能解决一些问题的话,则通过代码直接来设置mapkey和value,放到map中来,比如说当前时间等等。

    11.5K40

    POI生成word文档完整案例及讲解

    里面可以表格,使用xwpfTableCell.getTables()获取,and so on 在poi文档中段落和表格是完全分开如果在两个段落中有一个表格,在poi中是没办法确定表格在段落中间。...判断规则,和json数据做对比,就是json数据中有没有数据库中要。...=-1){//存在这个符号,表示需要判断前提条件,@&@,前提条件,需要取字段,单位 //                        String[] methodParamArray = xpath.split...则会通过反射方法来获取数值。 可以看出来只要是input开头都是通过这个方法获取这个主要是为了给替换做准备。...反射逻辑详见 反射一个案例分析 取值逻辑5: 假如上面的4套规则还不能解决一些问题的话,则通过代码直接来设置mapkey和value,放到map中来,比如说当前时间等等。

    4.7K31

    《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    5.3使用页面属性定位 标签属性定位,相对比较简单,也要求属性能够定位到唯一一个元素,如果存在多个相同条件标签,默认只是第一个,具体格式: xxx.By.xpath("//标签[@属性='属性']"...//则是指从前面的节点子节点中进行查找 (6) 选取若干路径| 这个符号用于在一个xpath中写多个表达式用,用|分开,每个表达式互不干扰,意思是一个xpath可以匹配多个不同条件元素,例如:如下图所示...不想使用感觉对路径定位方式,也没法搞清使用什么序号来定位元素,那么则推荐使用属性定位元素方法。 被测试网页元素一般都包含各种各样属性,并且很多属性具有唯一性。...因此非常建议使用相对路径结合属性定位方式来编写XPath定位表达式,基于此定位方法可以解决大部分页面元素定位问题。...先找到一个相对好定位元素,再根据这个元素和要定位相对位置进行定位,可以解决一些元素难以定位问题。 5.4.1轴示意图 ?

    3.4K41
    领券