html代码:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>button dropdown</title>
<script type="text/javascript" async="" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />
<script type="text/javascript">
$(document).ready(
function(){
$('.dropdown-menu').find('a').first().click(function(){ alert('watir-webdriver is better than selenium-webdriver'); });
}
);
</script>
</head>
<body>
<h3>button dropdown</h3>
<div class="row-fluid">
<div class="span3">
<div class="well">
<div class="btn-group">
<a class="btn dropdown-toggle btn-info" data-toggle="dropdown" href="#">
Info
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="#">watir-webdriver</a></li>
<li><a href="#">better than</a></li>
<li><a href="#">selenium-webdriver</a></li>
</ul>
</div>
</div>
</div>
</div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>

  

Python 代码:

#coding=utf-8

from selenium import  webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
import os if 'HTTP_PROXY' in os.environ: del os.environ['HTTP_PROXY'] dr = webdriver.Firefox()
file_path = 'file:///' + os.path.abspath('button_dropdown.html')
dr.get(file_path) sleep(1) #
dr.find_element_by_class_name('btn dropdown-toggle btn-info').click()
buttons =dr.find_elements_by_class_name('dropdown-menu')
for btn in buttons:
if btn.text == 'better than': btn.click() sleep(1) dr.quit()

  错误信息:InvalidSelectorException: Message: u'The given selector btn dropdown-toggle btn-info is either invalid or does not result in a WebElement.

解决办法:

#coding=utf-8

from selenium import  webdriver
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep
import os if 'HTTP_PROXY' in os.environ: del os.environ['HTTP_PROXY'] dr = webdriver.Firefox()
file_path = 'file:///' + os.path.abspath('button_dropdown.html')
dr.get(file_path) sleep(1) #点击下拉菜单
dr.find_element_by_link_text('Info').click() #找到dropdown-menu父元素
WebDriverWait(dr,10).until(lambda the_driver: the_driver.find_element_by_class_name('dropdown-menu').is_displayed()) #找到better than
menu = dr.find_element_by_class_name('dropdown-menu').find_element_by_link_text('better than') menu.click() sleep(3) dr.quit()

  

Message: u'The given selector btn dropdown-toggle btn-info is either invalid or does not result in a WebElement的更多相关文章

  1. Appium 运行脚本报错InvalidSelectorException: Message: Locator Strategy 'css selector' is not supported for (转)

    现象:Appium运行脚本报错InvalidSelectorException: Message: Locator Strategy 'css selector' is not supported f ...

  2. RobotFramework+Appium 升级Appium v1.10.0后,执行click element时报错:InvalidSelectorException: Message: Locator Strategy 'css selector' is not supported for this session,解决办法

    报错信息如下: debug] [35m[XCUITest][39m Connection to WDA timed out[debug] [35m[XCUITest][39m Connection t ...

  3. jquery $('#btn').click与$("#btn").live("click",function()有什么区别?

    live方法绑定的事件处理函数,在页面中未来添加的元素只要满足原来的选择器,仍然会导致事件触发.普通的事件绑定则没有这个效果.对于#btn这个选择器来说,如果你未来将id为btn的元素删除,然后再创建 ...

  4. Bootstrap4总结

    一. bootstrap简介 Bootstrap,来自 Twitter(全国最大的微博),是目前最受欢迎的前端框架. bootstrap下载及演示 http://v3.bootcss.com 什么是b ...

  5. Bootstrap 下拉菜单和滚动监听插件

    一.下拉菜单 常规使用中,和组件方法一样,代码如下: //声明式用法 <div class="dropdown"> <button class="btn ...

  6. bootstrap的滚动监听

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...

  7. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  8. Selenium2+python自动化73-定位的坑:class属性有空格

    前言 有些class属性中间有空格,如果直接复制过来定位是会报错的InvalidSelectorException: Message: The given selector u-label f-dn ...

  9. 2.33 定位的坑:class属性有空格

    2.33 定位的坑:class属性有空格 前言有些class属性中间有空格,如果直接复制过来定位是会报错的InvalidSelectorException: Message:The given sel ...

随机推荐

  1. unity3d之GUI

    1.Button void OnGUI() { , , , ), "up")) {flg=true; } , , , ), "down")) {flg=fals ...

  2. ES6进一步整理

    内容: 1.变量及赋值 2.函数 3.数组及json 4.字符串 5.面向对象 6.Promise 7.generator 8.模块 1.变量及赋值 (1)ES5变量定义 var:     可以重复定 ...

  3. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165233

    Exp0 Kali安装 安装过程 1.首先我的Mac上已经安装好了VMware Fusion,所以直接下载对应的虚拟机版本的Kali即可. 2.进入Kali官网进行下载. 以下为下载链接: Kali ...

  4. html-字体

    字体大小 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  5. 管道| , <<<重定向

    https://blog.csdn.net/stormbjm/article/details/19173011

  6. python3基础:字符串、文本文件

    字符串: 练习1: str = "大胖三百磅不是二百磅陪着一百磅的小胖" print(str.replace("磅", "斤")) # 替换 ...

  7. 表单:提交验证,及blur事件验证

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  8. hive 上篇

    hive 是以hadoop为基础的数据仓库,使用HQL查询存放在HDFS上面的数据,HSQL是一种类SQL的语句,最终会被编译成map/reduce,HSQL可以查询HDFS上面的数据:不支持记录级别 ...

  9. THREE.JS 场景世界坐标和平面二维坐标互转

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  10. Elasticsearch究竟要设置多少分片数?

    0.引言 本文翻译自Elasticsearch20170918热乎的官方博客,原作者:Christian Dahlqvist. 在构建Elasticsearch集群的初期如果集群分片设置不合理,可能在 ...