栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python selenium定位动态下拉框

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python selenium定位动态下拉框

Python selenium定位动态下拉框

1、下拉框元素需要点击控件才展示

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

2、定位到下拉框里的筛选项元素,每次滚动都会变化

这里的内容要用XPAN定位到//div[@class=“rc-virtual-list-holder-inner”]
然后使用 鼠标滚动的方式,去获取所有的元素名称
方法:

    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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号