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

python+selenium-webdriver2实战练习

时间: 2024-11-12 15:35:00

python+selenium-webdriver2实战练习的相关文章

第一章 python+selenium自动化测试实战

@序章 自动化测试是软件测试的主流方向之一: 教程从测试的根本需求出发,讲解如何施展自动化测试. 首先,我们要明白,自动化仅仅是满足我们某种需求的一种工具:没有必要花费时间把它全部弄懂:我们只需要学会它的一些功能,然后让它为我们工作:仅此而已. python+selenium环境部署 官方地址:https://www.python.org/ 这是最新版本的安装包. python2.x的和python3.x的有极大区别,语法上有很多不同:但python3.x之间的差别是不大的:建议使用最新版本进行

《一头扎进》系列之Python+Selenium框架实战篇4- 价值好几K的框架,呵!这个框架有点意思啊!!!

1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到base_page.py这个类文件,以后每个POM中的页面类,都继承这个基类,这样每个页面类都有基类的方法,这个我们会在这篇文章由宏哥实现. 2.项目层级结构 1. 上一篇中我们已经创建好了项目层级结构,具体项目层级结构如下图.这里不再赘述,相关文件也如下: 3. 定位和截图类封装 1. 在实现封装基类里

python+selenium webdriver 自动化测试(一)

作为一个刚刚接触python,第一次编程,第一次试着去做自动化的小渣渣,借此地来见证自己的进步,也许每一步对于别人来说微不足道, 但是对于自己来说,是无数次思考之后才能迈出的一步,很吃力,也同样很欣慰.废话不多说,进入主题. 我用的是python+selenium webdriver来搭建自动化框架,对于python语言,不熟悉,只是粗略的看了一遍书,不知道该编什么,也不知道怎么编,请教大牛后,直接上路,不纠结,实战中可以学会更多.推荐一本书,虫师的<selenium webdriver (py

Python Selenium Cookie 绕过验证码实现登录

Python Selenium Cookie 绕过验证码实现登录 之前介绍过博客园的通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie_Login.py # Author : Adil # DateTime : 2018/3/20 19:47 # SoftWare : PyCharm from selenium import webdriver import

python selenium系列(三)常用操作类型及方法

一 前言 开展WEB UI自动化的核心思路,无非就是找到元素,然后操作元素这两个内容.在python selenium系列(二)元素定位方式一文中,已经介绍了如何找到元素这项技能,本文将介绍第二项内容,即如何操作已经找到的元素. 二 操作方法分类 总体来说,可以将操作大体分成四类,即浏览器操作.键盘操作.鼠标操作.js脚本. 1.  浏览器常用操作方法: 方法 描述 driver.maximize_window() 窗口最大化 driver.back() 页面返回 driver.forward(

python selenium系列(四)元素等待

一 前言 在前面的selenium系列(二)元素定位方式和selenium系列(三)常用操作类型及方法两节中,已经介绍了web页面元素的识别定位.操作等技术,可能你会觉得掌握这两项技术就可以实施web自动化了,答案基本是这样的,毕竟元素定位和操作是核心技术.但是,在某些场景,脚本的运行并非预期那样,如,要操作的元素用常规方法无法识别.元素可以识别但在脚本运行时却未如期而至等.为了解决这些疑难杂症,接下来三节内容将会介绍处理这些问题的通用方法. 在本节,主要介绍元素等待的使用方法和场景,该方法是开

python爬虫Urllib实战

Urllib基础 urllib.request.urlretrieve(url,filenname) 直接将网页下载到本地 import urllib.request >>> urllib.request.urlretrieve("http://www.hellobi.com",filename="D:\/1.html") ('D:\\/1.html', <http.client.HTTPMessage object at 0x0000000

Python Selenium 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows

Python Selenium 文件上传(一)

昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直接定位到元素,然后再sendKeys("value")即可 <input id="file_name" class="text-1 w255" type="text" readonly="" value=

转 Python Selenium设计模式-POM

前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python selenium2开始UI级自动化测试并不是多么艰巨的任务.只需要定位到元素,执行对应的操作即可.下面我们看一下这个简单的脚本实现百度搜索. from selenium import webdriver import time driver = webdriver.Firefox() driver.i