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

根据selenium中的href值,有没有办法等待a标记元素成为两个元素中的一个?

根据selenium中的href值,可以使用WebDriverWait类中的expected_conditions模块来等待a标记元素成为两个元素中的一个。具体步骤如下:

  1. 导入WebDriverWait和expected_conditions模块:
代码语言:txt
复制
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
  1. 使用WebDriverWait类创建一个等待对象,并指定最长等待时间:
代码语言:txt
复制
wait = WebDriverWait(driver, 10)  # driver为WebDriver对象,10为最长等待时间(单位:秒)
  1. 使用expected_conditions模块中的presence_of_element_located方法,结合a标记元素的href值,来等待a标记元素成为两个元素中的一个:
代码语言:txt
复制
element = wait.until(EC.presence_of_element_located((By.XPATH, "//a[@href='your_href_value']")))

其中,By.XPATH表示使用XPath定位方式,"//a[@href='your_href_value']"为具体的XPath表达式,your_href_value需要替换为实际的href值。

  1. 可以根据需要对等待的元素进行进一步操作,例如点击、获取文本等。

关于selenium、WebDriverWait类、expected_conditions模块的更多详细信息,可以参考腾讯云的产品文档:

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

相关·内容

  • 20行代码,用Python实现异常测试用例

    根据功能复杂与简单,来决定要不要分成2个页面,例如1个页面只是个显示功能,没有别的东西了,那就没有必要浪费时间再去整一个。如果初学者分不清,就按着自己看法来。...','python') #断言 首页当中-能否找到 退出 这个元素 #等待10秒 元素有没有出现 //a[@href="/Index/logout.html"]...有些用例断言肯定是不止一条,可能涉及元素定位有1个以上。每一个测试用例都有元素断言,也就意味着每条用例中都可能有元素定位方式。...如果某一个元素定位方式发生变化,你能保证200个定位没有重复这种元素定位吗? 能保证某一个元素发生了变化,测试用例不需要同步修改吗? 所以这种做法是不可取,后期维护时候工作量非常大。...10秒 元素有没有出现 //a[@href="/Index/logout.html"] #如果存在就返回True,不存在就返回False try:

    53910

    元素定位和定位辅助工具

    elements对象是所有符合这个条件元素。web element对象,根据下标选择对应去操作就好了。...定位时候是会有元素出来,但是首先确定是不是我要找元素。如果不是,那就再换。 在一个html页面,如果两个元素一模一样,通过自己本身没办法定位到自己,就可以想点别的方法。...层级定位,通过优秀上级上上级来找到。虽然两个元素是一模一样,但是它们父辈不一样,可以现根据爸爸来找。 ? 找到一个元素,要在它后代找,可能是直系后代,也有可能是子孙当中。...帮你加个id,方便你做元素定位。如果一个系统很多元素都有唯一id的话,这样做起来非常快。 实际上,目前在做很多系统时候你会发现,光有这些定位方式没有办法定位到所有元素。...第一部分是等待,第二部分是条件。 等待: 由两个东西来完成,第一个是WebDriverWait类,它是个显性等待类,这个类处理事有什么呢?

    1.4K10

    python selenium2示例 - 同步机制

    前言 在使用python selenium2进行自动化测试实践过程,经常会遇到元素定位不到,弹出框定位不到等等各种定位不到情况,在大多数情况下,无非是以下两种情况: 1、有frame存在,定位前...其设置一个最长等待时间,如果在规定时间未完成,则进入下一步。...不足:在实践,通常我们需要操作元素已经显示出来,但因网络或其他因素,浏览器一直处于加载个别js或图片或其他资源时,隐性等待模式下,这时会依旧处于等待状态直至页面全部加载完毕才能进入下一步。...那有没有更好办法呢?当然是有的,请参见下一方式。 重要:隐性等待是全局性质,只需在driver实例化后,设置一次即可。...,则显性等待起决定性作用,但要注意是:最长等待时间取决于两者之间,所以这里显性等待最长时间为20s。

    85840

    Python网络爬虫笔记(四):使用selenium获取动态加载内容

    (一)  说明 上一篇只能下载一页数据,第2、3、4....100页数据没法获取,在上一篇基础上修改了下,使用selenium去获取所有页href属性。...要是几百万条,这个就得点好长时间了) 研究下有没有办法调用JS修改页面默认显示数据条数(例如:博客园默认1页显示20条,改成默认显示1万条数据)。...获取所有随笔href属性,url只能传小类,例如https://www.cnblogs.com/cate/python/ 13 def selenium_links(url): 14...x +=1 25 #等待 Next出现并返回 ,就是博客园翻到下一页那个元素 26 lastPage = WebDriverWait(driver, 30).until...((By.CSS_SELECTOR, 'a.titlelnk'))) 29 #迭代,将href属性添加到url_list 30 for h in html: 31

    3.1K60

    彻底学会Selenium元素定位

    注意: 使用 XPath 策略,建议先在浏览器开发者工具根据策略语法,组装策略,测试验证后再放入代码中使用。 目标元素有些属性和属性可能存在多个相同特征元素,需注意唯一性。...多个属性可由多个 and 连接,每一个属性都要以 @ 开头,可以根据需求使用更多属性。...Selenium框架官方推荐使用CSS定位,因为CSS定位效率高于XPATH。 CSS是一种标记语言,控制元素显示样式,就必须找到元素,在CSS标记语言中找元素使用CSS选择器。...添加适当等待时间,避免等待时间不够,元素还未加载出来 多窗口时需考虑窗口句柄是否还处在上一个窗口,导致无法定位新窗口元素,是否需要切换窗口句柄 iframe/frame,这是个常见定位不到元素原因...,frame实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应frame,再对那个页面里元素进行定位 如果使用xpath或css_selector,请在浏览器开发者工具调试测试正确后再写入代码

    6.4K31

    Python selenium — 一定要会用selenium等待,三种等待方式解读

    办法,这就要看selenium提供另一种等待方式——显性等待wait了。...显性等待 第三种办法就是显性等待,WebDriverWait,配合该类until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。...默认只有NoSuchElementException until method: 在等待期间,每隔一段时间(__init__poll_frequency)调用这个传入方法,直到返回不是False...driver.title title_is title_contains 以下两个条件验证元素是否出现,传入参数都是元组类型locator,如(By.ID, ‘kw’) 顾名思义,一个只要一个符合条件元素加载出来就通过...visibility_of 以下两个条件判断某段文本是否出现在某元素一个判断元素text,一个判断元素value text_to_be_present_in_element text_to_be_present_in_element_value

    2K10

    【C++】STL 算法 - transform 变换算法 ( transform 函数原型 | 将 一个两个 输入容器 元素 变换后 存储到 输出容器 )

    transform 算法 接受 一个两个输入范围 , 以及一个输出范围 , 并 根据提供 一元函数对象 或 二元函数对象 对 " 输入范围内元素 " 进行转换 ; 2、transform 算法函数原型...根据 输入元素 范围确定 , transform 会将 变换结果存储到 输出容器 ; UnaryOperation unary_op 参数 : 一元函数对象 , 将输入容器 每个元素 输入到该...一元函数对象 , 将计算结果 输出到 输出容器 ; 返回解析 : 该 算法函数 返回 OutputIt 类型 返回一个 迭代器 , 该迭代器指向最后一个被写入元素之后位置 ; 3、...transform 算法函数原型 2 - 将 两个输入容器 元素 变换后 存储到 输出容器 transform 算法函数原型 : 下面的函数原型作用是 将 两个输入容器 元素 变换后 存储到...一元函数对象 : 接受一个参数 , 也就是来自第一个输入序列元素 , 并返回转换后 ; 二元函数对象 : 接受两个参数 , 第一个参数是 来自第一个输入序列元素 , 第二个参数是 第二个输入序列元素

    38510

    【5分钟玩转Lighthouse】爬取JavaScript动态渲染页面

    ()print(t_body)[ ]下面,我们讲解下如何成功获取javaScript生成tbody数据四.Selenium获取Selenium一个web自动化工具,运行在浏览器,使用脚本模拟用户对浏览器进行操作...在本例,本质上是使用Selenium等待javascript加载完成后,再获取数据。Selenium安装和配置非常简单,脚本编写也非常容易。...这个函数是Selenium获取元素函数,返回是WebElement类型,可以通过text获取元素文本接下来,我们使用同样方法,获取‘下一页’按钮,并点击该按钮:wait = WebDriverWait...这样,就可以保证每次根据'detail-view'获取元素时候,就只有唯一一个Iframe。这个解决办法看起来毫无技术含量,并且增加了爬取总耗时:增加了一个click动作耗时。...之所以写出这两个例子,是因为这两个解决方法其实都属于‘怪逻辑’:一个莫名其妙点击,和一个莫名其妙调大窗口。如果你仅仅去看代码,你不会明白这两行代码意义在哪里。

    4.3K176103

    爬虫学习(三)

    使用Chrome插件选择标签时候,选中时,选中标签会添加属性class="xh-highlight" 1.1.1查找某个特定节点或者包含某个指定节点 选取属于bookstore子元素一个...book元素,且其中price元素必须大于35.00: /bookstore/book[price>35.00] 选取bookstore元素book元素所有title元素,且其中price...xpath方法返回列表三种情况: 1.返回空列表:根据xpath语法规则字符串,没有定位到任何元素。 2.返回由字符串构成列表:xpath字符串规则匹配一定是文本内容或某属性。...爬取百度贴吧时候,发现他数据藏在了HTML页面的注释,是根据js解析出来。如果遇到诸如此类网站,数据是根据js修改后加载。我们只需要提供一个不支持js浏览器版本即可。...,即一个页面嵌套了另一个网页,selenium默认是访问不了frame内容,对应解决思路是: driver.switch_to.frame(frame_element) # 切换到定位frame

    5.7K30

    《手把手带你学爬虫──初级篇》第5课 Selenium WebDriver用法

    () # 获取class为n所有元素,取最后一个,就是下一页元素 In [74]: ele_next = browser.find_elements_by_class_name('n')[-1] #...ExpectedCondition成功返回结果是一个布尔类型true或是不为null返回。...默认等待时间是0秒,一旦设置该,隐式等待是设置该WebDriver实例生命周期。...竟然提示Selenium已经废弃了对PhantomJS支持,但,还是获取到了信息。讲到这里了都,瑟瑟发抖。。 于是,再加一个小章节,说明解决这个问题方法。...) 根据标签class属性查找,当有多个时,返回第1个 browser.find_element_by_tag_name() 根据标签名查找 browser.find_element_by_link_text

    2.6K32

    基于某政府招标网爬虫

    编程笔记 关于xpath获取元素 如图所示:使用xpath语法//tbody//td[2]获取并不是整个tbody第二个td元素,而是tbody下一级中所有的所有的第二级td元素。...截图示例 在selenium模块使用,不能直接使用xpath语法获取元素内文字,因为selenium语法要求寻找到对象必须是html元素,不能是字符串。...xpath获取元素里文本两个必要条件: 元素在DOM,如果页面存在Iframe框架则需要定位到框架后获取; 元素在当前窗口显示(人眼可以看到)。...解决该办法可以通过移动鼠标和执行滚动页面JS函数实现。 隐式等待没啥用,有时候浏览器界面已经可以看到元素,但是获取元素text还是获取不到,需要使用time.sleep()强制等待。...在html元素内,有些元素虽然在DOM文档,但是该元素css属性确实display: none;,而对这种元素直接使用element.txt是获取不到,因为由于webdriver spec定义

    1.7K11

    Selenium入门介绍

    / 驱动特性 等待 浏览器在加载页面时需要一定时间,因此在Selenium定位页面元素时也需要一定等待时长,已确保页面被正常加载完毕并且可以定位到目标元素。...有4种实现等待方式: 1.进程等待: import time time.sleep(10) 2.显示等待:设置一个满足某个条件显示等待 from selenium.webdriver.support.ui...显示等待和隐式等待不能一起混合使用,否则将可能会带来一起超出预期效果。...# 查找元素Class名称包含指定元素,注意:传递参数不能是一个复合class,如:'clazz1 clazz2' driver.find_element(By.CLASS_NAME, 'clazz1...定位多个元素 在定位多个元素时跟定位单个元素使用相同策略,不同之处在于返回不再是单个元素,而是一个元素列表。

    2.4K30

    怎么用Python初步实现页面对象和测试用例分离?举个登录栗子

    10秒 元素有没有出现 //a[@href="/Index/logout.html"] #如果存在就返回True,不存在就返回False try:...只是看它存不存在,有没有,可不可见。浏览器自己去操作了,你可能看不到是正常。 没做点击等各种操作,只是判断有没有而已。 2.核心思想是:页面对象和测试用例分离。...4.每个断言还要再写成一个函数到相应页面,只要是页面的操作都要写一个函数。但是有的情况下可以不写,大部分情况下都要写。 当你有几百个用例时候,断言很多,如果不根据页面封装起来,那后面就抓瞎了。...7.在首页当中会有很多功能点,有的人封装比较细,有的人封装比较粗,这个是没有关系。毕竟这个没有一个统一标准,大家都是根据自己实际对页面的分析情况做处理。 以及业务过程使用方式。...比如这两个功能全部是放一起使用,那你可以把它封装在一起。如果本身就是分开,那就把它分开封装。 8.封装功能时候要记住一个原则:它是一个函数,一个函数不宜太过于复杂,也不宜过于太多。

    76820

    爬虫之Selenium等待及定位

    1.2 隐性等待 第二种办法叫隐形等待,implicitly_wait(xx),隐形等待表示代码给浏览器等待设定一个最长时间,不管代码速度多块,都要等浏览器xx秒,如果浏览器这段时间内来了,则两个同步运行...弊端:程序会一直等待整个页面加载完成,也就是一般情况下看到浏览器标签栏小圈不转,才执行下一步。如果想等到我要元素出来直接进入下一步,就需要用显示等待了。...1.3 显性等待 第三种办法就是显性等待,WebDriverWait,配合该类until()和until_not()方法。...实例,即我们上例driver timeout: 超时时间,等待最长时间(同时要考虑隐性等待时间) poll_frequency: 调用until或until_not方法间隔时间...until method: 在等待期间,每隔一段时间调用这个传入方法,直到返回不是False message: 如果超时,抛出TimeoutException,将message传入异常

    96330

    Python Selenium 设置元素等待三种方式

    Selenium 设置元素等待三种方式 1. sleep 强制等待 2. implicitly_wait() 隐性等待 3....sleep等待时间过短,元素还没加载出来,程序报错,sleep设置等待时间过长,元素早就加载出来了,程序还在等待,浪费是时间,影响代码整体运行效率 个人看法: 简单粗暴,根据网站响应速度和自己网速来设置合理休眠时间...个人看法: 1.不适合用在数据在ajax网站,比如翻页什么,某个元素一直存在,但是数据一直在变,这样的话只要加载出来第一页,后面翻页数据全部会和第一页数据相同,因为代码判断了这个元素已经被加载出来了...无需等待整个页面加载完成,只需加载到你要定位元素就可以执行代码。是最智能设置元素等待方式。...设置元素等待三种方式文章就介绍到这了,更多相关Selenium 元素等待内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

    1.4K61
    领券