Pyhon使用webdriver操作隐藏元素

来源:互联网 发布:认知心理学 知乎 编辑:程序博客网 时间:2024/05/01 12:20

问题:使用webdriver的find_element(by.XXX)无法找到页面隐藏对像并执行相应的操作

分析:页面使用display:none和visible:hidden将对应元素隐藏

          display:none和visible:hidden的区别: -- 百度

          * display:none ---不为被隐藏的对象保留其物理空间,即该对象在页面上彻底消失,通俗来说就是看不见也摸不到。

          * visible:hidden--- 对象在网页上不可见,但对象在网页上所占的空间没有改变,通俗来说就是看不见但摸得到。

方法:selenium的webdriver提供了更底层的方法与网页元素对像进行交互,从而完成更为复杂的操作。

实现: 参考 selenium.webdriver.common.action_chains   

补充: 实现过程中发现其方法的执行速度非常慢,目前未找到原因。为了保证执行,采用了最暴力的手段,在执行的步骤中增加了等待时间Sleep().

           经过观察,有可能是由于移动至目标对像时,弹出的子对像显示的时间不够长,无法捕获隐藏的子对像,继续实践中。

--2016/09/07, 考虑到长时间等待并不是解决问题的最终方法,因此通过点击后页面跳转后的特征值进行判断是否操作成功,如果成功则继续执行,否则执行对隐藏元素的操作,基本思路如下

<span style="font-family:Arial;font-size:10px;">def doElement(topelement, subelement):    do......if isElementExist(element):    flag = True    try:        webdriver.find_element_by_XX(element)         return flag    except:         flag = false     return flag</span>

注: selenium.webdriver.common.action_chains 

<span style="font-family:Microsoft YaHei;font-size:12px;">class ActionChains(__builtin__.object)     ActionChains are a way to automate low level interactions such asmouse movements, mouse button actions, key press, and context menu interactions.This is useful for doing more complex actions like hover over and drag and drop. Generate user actions.   When you call methods for actions on the ActionChains object,   the actions are stored in a queue in the ActionChains object.   When you call perform(), the events are fired in the order they   are queued up. ActionChains can be used in a chain pattern::     menu = driver.find_element_by_css_selector(".nav")    hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")     ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform() Or actions can be queued up one by one, then performed.::     menu = driver.find_element_by_css_selector(".nav")    hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")     actions = ActionChains(driver)    actions.move_to_element(menu)    actions.click(hidden_submenu)    actions.perform() Either way, the actions are performed in the order they are called, one afteranother. </span>



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 林肯mkz钥匙锁在车内怎么办 八四消毒液弄到衣服上怎么办 微信朋友圈发过的文章想修改怎么办 白色衣服被洗衣液染色了怎么办 准迁证和迁移证不想迁了怎么办 出了迁移证又想迁到其他地方怎么办 高中的会考如果没g合格怎么办 鞋子里自带的鞋垫坏了怎么办 入厕纸把私处伤了一下怎么办? 夏天做月子用姨妈巾热怎么办 涂了痔疮膏后怕粘到内裤怎么办 眼罩里面的蓝色液体干了怎么办 新买的饮水机有塑料味怎么办 白色衣服被洗衣液染荧光了怎么办 衣服碰到了酒店的毛巾被单怎么办 防晒喷雾弄衣服上有荧光怎么办 剑网3重置版删除后有残留怎么办 在超市买到变质的水果怎么办 微信官方电话一直打不通怎么办 对方欠货款股东换了不还怎么办 闲鱼买的东西确认收货有问题怎么办 不让微信好友看到吃鸡的名字怎么办 金鹰贵宾积分卡过期了怎么办 小宝机器人一直停在联网界面怎么办 手机版的有道云笔记忘记邮箱怎么办 钡灌肠复查钡剂排空不良怎么办 两个月宝宝灌肠后不排便怎么办 一岁宝宝肠套叠灌肠后拉肚子怎么办 苹果手机自带的天气没有了怎么办? 衣服在洗衣机里忘记拿出来怎么办 苹果se手机系统占内存太大怎么办 客人把饭店老板打了民警怎么办 商场嫌品牌低端不让入驻怎么办 带着孩子坐飞机座位不在一起怎么办 公司老板跑路了员工该怎么办 超市买的衣服防盗扣忘记取了怎么办 在超市买的衣服那个扣没取怎么办啊 超市散称商品条码老记不住怎么办 app账号密码忘记了怎么办注销难 幼儿老师遇到家长比较孩子该怎么办 发的微信公众号内容重复了怎么办