首页 > 代码库 > python+selenium-webdriver2实战练习

python+selenium-webdriver2实战练习

   借用了张飞同学的HTML来进行的实战,文件下载路径:http://files.cnblogs.com/hugh007/demo.zip

   代码如下:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait
#from selenium.webdriver.support import expected_conditions as EC
#from selenium.webdriver.common.by import By

import os


class Demo(object):


    def __init__(self):
        self.dr = webdriver.Chrome()
    
    #Goto
    def test_goto(self,url):
        self.dr.get(url)

    
    #Quit
    def test_quit(self):
        self.dr.quit()
        
    #Input Text
    def test_input(self,value):
        input_element = self.dr.find_element_by_id(‘user‘)
        
        input_element.send_keys(value)
        sleep(2)
        
        input_element.clear()
        sleep(2)
        
        input_element.send_keys(value)
        
        #get the attribute value
        text = input_element.get_attribute("value");
        print text
    

    #Link
    def test_link(self):
        
        link_element = self.dr.find_element_by_link_text(‘baidu‘)

        #get the link address
        href = http://www.mamicode.com/link_element.get_attribute("href")
        print href

        #get the link value
        text = link_element.text
        print text

        link_element.click()
        self.dr.back()


    #Single Select
    def test_select(self):
        select = Select(self.dr.find_element_by_name(‘select‘))
        
        select.select_by_index(1)
        sleep(2)
        
        select.select_by_visible_text("Audi")
        sleep(2)
        
        select.select_by_value(‘opel‘)

 

    # 选择下拉菜单中的最后一项

    dr.find_element_by_tag_name(‘select‘).find_elements_by_tag_name(‘option‘)[-1].click()


    #RadioBox
    def test_radio(self):
        radioboxes = self.dr.find_elements_by_name(‘identity‘)
        
        for radiobox in radioboxes:
            radiobox.click()    
            sleep(2)
        
    #CheckBox
    def test_checkbox(self):
        
        checkboxes = self.dr.find_elements_by_css_selector(‘input[type=checkbox]‘)
        for checkbox in checkboxes:
            checkbox.click()
            sleep(2)
        self.dr.find_elements_by_css_selector(‘input[type=checkbox]‘).pop().click()


    # local single Radiobox and CheckBox
    #dr.find_element_by_xpath("//tr[4]/td[2]/div/input[3]").click()    
    #dr.find_element_by_xpath("//input[@type=‘checkbox‘][@name=‘checkbox1‘]").click()

    # button
    def test_button(self):    
        button_element = self.dr.find_element_by_class_name("button")
        button_element.click
        button = button_element.is_enabled()
        print button


    #ActionChains
    def test_action_chains(self):
        """
        eg
        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()
        """    
        alert_element = self.dr.find_element_by_class_name("alert")
        actions = ActionChains(self.dr)
        actions.click(alert_element)
        actions.perform()
        sleep(2)
    
    #popped up Alert
    def test_alert(self):
        alerts = Alert(self.dr)
        print alerts.text
        alerts.accept()
        #alerts.dismiss()

    #upload
    def test_upload(self, filepath):
        #JavascriptExecutor j= (JavascriptExecutor)driver;
        #j.executeScript("document.findElementById(‘load‘).style.display=‘block‘; ");
        upload_element = self.dr.find_element_by_id("load")
        upload_element.send_keys(filepath)

    def test_multiple_windows(self):
        element = self.dr.find_element_by_class_name(‘open‘)
        element.click()
    
    def test_action(self):
        action_element= self.dr.find_element_by_class_name("over")
        actions = ActionChains(self.dr)
        actions.move_to_element(action_element)
        actions.perform()
        text = self.dr.find_element_by_class_name("over").text
        print text
        
    def test_wait(self):
        wait_element = self.dr.find_element_by_class_name("wait")
        wait_element.click()
        waits = WebDriverWait(self.dr, 10)
        element = waits.until(lambda s: s.find_element_by_class_name("red"))
        
        #print waits.until(lambda s: s.find_element_by_class_name("red").is_displayed())
        
        if element.is_displayed():
            print element.text
        else:
            print "Failed to display!"
        
        
        
file_path = ‘file:///‘ + os.path.abspath(‘demo.html‘)
a = Demo()
a.test_goto(file_path)
#a.test_input("This is python script")
#a.test_link()
#a.test_select()
#a.test_radio()
#a.test_checkbox()
#a.test_button()
#a.test_action_chains()
#a.test_alert()
#a.test_upload("c:\\test.txt")
#a.test_multiple_windows()
#a.test_action()
#a.test_wait()
#a.test_quit()