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()

  

posted on 2014-05-19 15:27  小白闯天下  阅读(561)  评论(0编辑  收藏  举报