Selenium入门系列5 下拉列表元素操作

dinghanhua 2018-10-02 原文

Selenium入门系列5 下拉列表元素操作

 

本节课程的下拉框是那种默认隐藏,当鼠标移到菜单上下拉框才显示的。如果直接getelement会报错,提示元素不可见:

 

so,得先让下拉列表显示出来再获取元素

用到的新知识:

is_display() 是否显示

webdriver.ActionChains(driver).move_to_element(menu).perform() 鼠标移到menu上

webDriverWait(driver,10).until(条件)  每10s监听一次,直到条件成立继续执行后续代码

 

脚本学习前,先网上找有下拉菜单的网页,或者在脚本同一个目录下新建test2.html,将以下内容拷贝进去保存。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test2</title>
    <style>
    .dropdown{
        postion:relative;
        display: inline-block;
    }

    .dropdownlist{
        display:none;
        postion:absolute;
        background-color:#f9f9f9;
        width:160px;
    }
    li,    li a{padding:10px;}

    .dropdown:hover{background-color:#ccc;}
    .dropdown:hover .dropdownlist{display:block;}

    ul{list-style-type: none}
    
    .dropdownlist a:hover{
        background-color:#00ffff;
    }
</style>
</head>
<body>
<div class="dropdown">
<a href="#">link1</a>
<ul class="dropdownlist">
    <li><a href="#" tabindex="-1">innertext</a></li>
    <li><a href="#" tabindex="-1">innertext</a></li>
    <li><a href="#" tabindex="-1">innertext</a></li>
    <li><a href="#" tabindex="-1">innertext</a></li>
    <li><a href="#" tabindex="-1">innertext</a></li>
    <li><a href="#" tabindex="-1">innertext</a></li>
    <li><a href="#" tabindex="-1">innertext</a></li>
    <li><a href="#" tabindex="-1">innertext</a></li>
</ul>
</div>
</body>
</html>

 

python脚本:

#coding:utf-8
#下拉列表定位
from selenium import webdriver
import time
import os
from selenium.webdriver.support.ui import WebDriverWait

#打开网页
driver=webdriver.Firefox()
filepath="file:///"+os.path.abspath("test2.html")
driver.get(filepath)
#鼠标移到link1上显示下拉框
menu=driver.find_element_by_link_text("link1")
webdriver.ActionChains(driver).move_to_element(menu).perform()
#监听下拉框是否显示,显示则继续执行代码
WebDriverWait(driver,10).until(lambda dr:dr.find_element_by_class_name("dropdownlist").is_displayed)
#获取下拉框的元素,鼠标移动
droplists=driver.find_element_by_class_name("dropdownlist").find_elements_by_tag_name("li")
for li in droplists:
    webdriver.ActionChains(driver).move_to_element(li).perform()

time.sleep(2)
driver.quit()

 

发表于 2018-10-02 12:33 主妇笔记 阅读() 评论() 编辑 收藏

 

版权声明:本文为dinghanhua原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dinghanhua/p/9736773.html

Selenium入门系列5 下拉列表元素操作的更多相关文章

  1. 对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default

    反编译或者.net用更高版本打开时会出现这个问题,解决办法如下: 1、网页版程序,将解决方案中的Web.con […]...

  2. Python Selenium 之生成Beautiful可视化报告

      提到自动化测试,少不了自动化生成测试报告,更少不了漂亮的测试报告呀!刚好看到在github上有个大神分享了 […]...

  3. 软件开发工具介绍之 4. 建模工具

       今天,系统的构建变得越来越复杂,UML建模CASE工具为项目相关人员(如,项目经理,分析员,设计者,构架 […]...

  4. NET Framework 4 官网下载

    NET Framework 4 官网下载 dotNetFx40_Full_x86_x64.exe 官网下载   […]...

  5. SUSE CaaS Platform 4 – Ceph RBD 作为 Pod 存储卷

    RBD存储卷 目前 CaaSP4 支持多种 Volume 类型,这里选择 Ceph RBD(Rados Blo […]...

  6. Matlab—从入门到精通 Chapter 4 编程基础

    —恢复内容开始— 4-1 M文件编辑器 在命令窗口输入edit命令,可以打开M文件编辑 […]...

  7. Unreal Engine 4 系列教程 Part 10:制作简单FPS游戏

    .output_wrapper pre code { font-family: Consolas, Incon […]...

  8. 4、map类和Navigation类小结

    Map类: 1、概述: esri.Map类是一种容器,其中可以放置layer(图层),Graphic(),in […]...

随机推荐

  1. eMMC基础技术2:eMMC概述

    0.前言 本文主要参考eMMC规范,从总体上对eMMC 进行简要介绍。主要包含如下的内容: (1)eMMC系统 […]...

  2. Wireshark抓包分析TCP 3次握手、4次挥手过程

    Wireshark简介 更多有关Wireshark的教程、软件下载等,请见:http://www.52im.n […]...

  3. 安全性测试:OWASP ZAP 2.8 使用指南(三):ZAP代理设置

    ZAP本地代理设置 如前文所言,ZAP的工作机制,是通过“中间代理”的形式实现。   ZAP的代理设置可以从菜 […]...

  4. 虚拟机网络ip设置

    由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决 […]...

  5. Python:递归函数

    阅读目录   楔子   初识递归   再谈递归   递归函数与三级菜单   递归函数与二分查找算法   楔子 […]...

  6. 机器学习在马蜂窝酒店聚合中的应用初探

    机器学习在马蜂窝酒店聚合中的应用初探 出门旅行,订酒店是必不可少的一个环节。住得干净、舒心对于每个出门在外的人 […]...

  7. AIX挂载NFS写入效率低效解决

    AIX挂载NFS写入效率低效解决 2018-10-25 21:36 by AlfredZhao, … […]...

  8. WebStorm 2016 License Server本地搭建教程 – qarluq

    前天网上找IntelliJIDEA  注册的方法 看到了一个博客http://blog.lanyus.com/ […]...

展开目录

目录导航