Python selenium定位动态下拉框

这篇具有很好参考价值的文章主要介绍了Python selenium定位动态下拉框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python selenium定位动态下拉框

1、下拉框元素需要点击控件才展示
selenium定位下拉框元素,python,selenium,开发语言selenium定位下拉框元素,python,selenium,开发语言

这里可以使用XPAN定位到下拉框,使用driver.find_element(By.XPATH,“路径”).click()进行点击

2、定位到下拉框里的筛选项元素,每次滚动都会变化
selenium定位下拉框元素,python,selenium,开发语言selenium定位下拉框元素,python,selenium,开发语言
这里的内容要用XPAN定位到//div[@class=“rc-virtual-list-holder-inner”]
然后使用 鼠标滚动的方式,去获取所有的元素名称
方法:文章来源地址https://www.toymoban.com/news/detail-531359.html

    def get_text(self,loc, page_name_action,all=False):
        # 等待元素可见并获取元素对象
        ele = self.wait_ele_visible_and_return_ele(loc, page_name_action,all)
        try:
            if isinstance(ele,list):
                value =[]
                for i in ele:
                    if len(i.text)==0:
                        continue
                    else:
                        value.append(i.text)
                my_log.info("获取所有的元素:{} 的文本值。获取结果为:{}".format(loc, value))
            else:
                value = ele.text
                my_log.info("获取元素:{} 的文本值。获取结果为:{}".format(loc, value))
            return value
        except:
            # 失败截图,异常详情写入日志,抛出异常
            my_log.exception("获取元素失败!")
            # 失败截图 - 页面名字_行为名字_当前时间.png
            self.save_page_shot(page_name_action)
            raise


    def mouse_move(self,loc,page_name_action):
        try:
            ele = self.wait_ele_visible_and_return_ele(loc, page_name_action) #等待元素出现
            ActionChains(self.driver).move_to_element(ele).perform()  #移动鼠标到该元素上
            my_log.info('移动鼠标到元素:{}'.format(loc))
            return ele
        except:
            my_log.exception('移动鼠标失败')
            self.save_page_shot(page_name_action)
            raise

    def scroll_into_view(self,loc,page_name_action):
        try:
            ele = self.mouse_move(loc,page_name_action)  #调用移动鼠标的方法
            self.driver.execute_script('arguments[0].scrollIntoView(true);', ele) #执行滑动滚动条的操作
            my_log.info(page_name_action)
        except:
            my_log.exception('滚动失败')
            self.save_page_shot(page_name_action)
            raise

    def get_all_select_text(self,loc,page_name_action):
        try:
            before_roll_list = self.get_text(loc, page_name_action, True)[0].split('\n')  #获取当前展示的所有的筛选项名称
            last_loc = (By.XPATH, '//div[text()="{}"]'.format(before_roll_list[-1]))   #获取当前展示的最后一个筛选项元素
            self.scroll_into_view(last_loc,'将筛选项{}滚到顶部'.format(before_roll_list[-1])) #调用滑动滚动条的方法
            after_roll_list = self.get_text(loc, page_name_action, True)[0].split('\n') #获取滑动后所有的筛选项名称
            device_type_text = after_roll_list + before_roll_list   #将两个列表组合成一个新的列表
            if after_roll_list[-1] == before_roll_list[-1]: #判断是否已经滑动到最低端
                my_log.info('“{}”已经是最后一个筛选项'.format(after_roll_list[-1]))
                return list(set(device_type_text))
            else:
                my_log.info('================获取滚动前后的数据================') 
                return list(set(device_type_text + self.get_all_select_text(loc,page_name_action)))
        except:
            my_log.exception('获取元素失败!')
            self.save_page_shot(page_name_action)
            raise

到了这里,关于Python selenium定位动态下拉框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python - selenium-元素定位

    目录 一.前序工作 二.webdriver测试 三.元素定位方式    根据ID定位                a = wd.find_element(By.ID, \\\'值\\\') 根据NAME定位                 a = wd.find_element(By.NAME, \\\'值\\\') 根据CLASS_NAME定位            a = wd.find_element(By.CLASS_NAME, \\\'值\\\')   根据TAG_NAME定位      

    2024年02月01日
    浏览(72)
  • Python selenium元素的定位

    视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他 会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在

    2024年02月08日
    浏览(41)
  • Python爬虫——selenium_元素定位

    元素定位:自动化要做的就是模拟鼠标和键盘来操作这些元素,点击,输入等等。操作这些元素前首先要找到它们,WebDriver提供很多定位元素的方法 根据id来找到对象【常用】 根据标签属性的属性值来获取对象 根据xpath语句来获取对象【常用】 find_elements_by_xpath可以返回多个

    2024年02月13日
    浏览(42)
  • Python Selenium 八大元素定位方法(下)

    今天我们来学习UI自动化中,剩余五个元素定位方法:tag_name、link_text、partial_link_text、Xpath、css_selector 以tag_name元素定位为例 HTML是由不同的标签组成的,每个标签都是指的同一类,所以用tag定位效率低下,一般不建议使用。 以link_text元素定位为例 1、使用F12,定位到含有链接

    2024年02月12日
    浏览(43)
  • 2.Python中selenium八大元素定位

    目录 如何进行元素定位 浏览器开发者工具介绍 一、id属性定位 二、name定位 三、class_name定位 四、tag_name定位 五、link_text定位 六、partail_link_text定位 七、xpath定位 7.1 选取节点 7.2 谓语 7.3 轴 7.4 函数 7.5 逻辑运算 八、css定位 8.1 css的定义 8.2 css定位策略 1.id选择器 2.class选择器

    2024年02月04日
    浏览(44)
  • Python学习笔记——selenium定位iframe和元素(快速定位)

    在使用selenium过程,发现定位iframe、元素比较困难,所以制作一个辅助小工具。  当前界面没有,调整driver位置 1.Xpath定位  2,.其他定位方式 获取元素、操作失败重复操作,直至操作成功。

    2024年02月13日
    浏览(48)
  • 【Python中Selenium元素定位的各种方法】

    1、元素定位操作: 2、创建浏览器驱动操作,导入By模块: 3、ID元素定位 4、name元素定位 5、class_name:class属性元素定位 6、tag_name:标签名元素定位 7、link_text:超链接标签元素定位 8、partial_link_text:超链接标签(模糊)元素定位 9、xpath:路径(绝对路径、相对路径)元素定位

    2024年02月19日
    浏览(37)
  • 开学了软测的同学卷起来--selenium元素及元素组定位+下拉框+简单的实战

    from selenium import webdriver fox = webdriver.Firefox() fox.get(‘https://baidu.com’) fox.find_element_by_xpath(‘//*[@id=“kw”]’).send_keys(‘北海有渔啊’) fox.find_element_by_id(‘su’).click() 第二种也许你会看不懂,看图你就懂了!这种方法我觉的还是比较简便的,xpath万能的定位方式!!! from selen

    2024年03月25日
    浏览(108)
  • 自学Python 69 Selenium八大元素定位方法(新版BY方法)_selenium定位元素的方法和优缺点

    文章目录 Python Selenium八大元素定位方法(新版BY方法) 前言 一、常用的八种定位方法(新旧对比) 二、查看网页元素 三、八大元素定位示例 1、id定位 2、name定位 3、class定位 4、tag定位 5、link定位 6、partial_link定位 7、xpath定位 8、CSS定位 在学习使用Selenium对网页元素进行定位时

    2024年04月22日
    浏览(59)
  • 【Python】Python 模块用法:selenium 4 版本页面元素定位方法汇总

    目录 一、定位页面元素方法源码说明  (1)Webdriver.common (2)selenium.webdriver.common.by (3)By 二、定位页面元素方法用法汇总 (1)2.0 及以下低版本 selenium :By 定位页面元素方法用法(可忽略) (2)3.0 ~ 3.9 版本 selenium:By 定位页面元素方法用法 (3)4.0 ~ 4.9 版本 selenium:

    2023年04月13日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包