seleinum之webdrive代码操作

基础版

from selenium import webdriver  #导入webdriver
import time
from selenium.webdriver import ActionChains #导入动作链,用于

# #导入selenium与浏览器得服务webdrive
# #通过手动方式启动webdrive服务
# mydrive = webdriver.Firefox()
# #实例化浏览器驱动对象,这个对象是firefox浏览器,使用不同的浏览器要实例化对应的类
# #相当于启动了浏览器
# time.sleep(2)
# mydrive.maximize_window()
# #使浏览器最大化
# mydrive.get('http://192.168.233.128:8080/WoniuSales1.4/')
# #get方法帮助我们url地址,打开浏览器访问界面
# time.sleep(2)
# mydrive.find_element_by_id('username').click()
# #通过id点击定位到搜索框元素
# mydrive.find_element_by_id('username').clear()
# #如果搜索框已有内容,清除内容
# mydrive.find_element_by_id('username').send_keys('admin')
# #输入搜索框要搜索的东西
# mydrive.find_element_by_id('password').click()
# mydrive.find_element_by_id('password').clear()
# mydrive.find_element_by_id('password').send_keys('admin123')
#
# # time.sleep(2)
# # mydrive.find_element_by_id('su').click()
# #通过元素定位到百度一下,并点击搜索



#浏览器切换界面操作
class Webdrivetest:
    def __init__(self):
        self.drive = webdriver.Firefox()
          #定义方法属性为实例化浏览器驱动
        # self.drive.maximize_window()  #浏览器最大化
        # self.drive.implicitly_wait(30) 
         #设置等待时间,全局通用,每步都等待

#界面切换使用方法
    def switch_window(self):  #定义打开浏览器方法
        self.drive.get('http://www.woniuxy.com') 
         #get方法帮助我们url地址,打开浏览器访问界面
                                     #也就是产生第一个窗口
        first_window = self.drive.current_window_handle
          #当前窗口身份标识
        self.drive.find_element_by_link_text('自研教材').click() 
        #通过链接,打开第二个窗口
        two_window = self.drive.current_window_handle
        time.sleep(5)
        else_window =self.drive.window_handles 
         #返回存放窗口身份的结果为列表储存
        self.drive.switch_to.window(else_window[0])
          #通过列表下标切换窗口

#ifrname方法嵌套页面定位元素方法
    def switch_iframe(self):
        self.drive.get('http://www.woniuxy.com/train/teacher.html') ##get方法帮助我们url地址,打开浏览器访问界面
        iframe1 = self.drive.find_element_by_id('iframe_company_mini') #定位到第一个iframe标签,返回的是一个元素
        self.drive.switch_to.frame(iframe1)
         #让drive进入切换到iframe1这个区域
        iframe2 = self.drive.find_element_by_xpath('//iframe[@class="ke-edit-iframe"]') #定位到第二个iframe标签,返回的是一个元素
        self.drive.switch_to.frame(iframe2)
         #让drive进入切换到iframe2这个区域
        
        #找目标元素
        self.drive.find_element_by_xpath('/html/body').click() 
        #定位到目标元素并点击
        self.drive.find_element_by_xpath('/html/body').send_keys('this is test') #输入要发送的内容

        #如果进入iframe要切出来,先切换到父级
        #self.drive.switch_to.parent_frame()  #切换到父级
        #如果要从iframe切换到主界面
        #self.drive.switch_to.default_content() 
         #切换到主界面,不再任何iframe

    #从某处拖拽到某处方法
    def drag_drop(self):
        self.drive.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
         #get方法帮助我们url地址,打开浏览器
        iframe1 = self.drive.find_element_by_id('iframeResult') 
         #定位找到iframe标签
        #切换到iframe
        self.drive.switch_to.frame(iframe1)
        #找元素  要拖拽的元素和目标位置元素
        source_element = self.drive.find_element_by_id('draggable')
        #被拖拽元素
        target_element = self.drive.find_element_by_id('droppable')
        #放入目标元素
        actions = ActionChains(self.drive) 
        #实例化一个动作连对象,指定drive执行
        # 添加拖拽的动作,参数分别是被拖拽对象和放入目标
        actions.drag_and_drop(source_element,target_element)
        #执行动作
        actions.perform()
        #有弹窗点击确定
        self.drive.switch_to.alert.accept()



#qq空间写日志   主要是iframe使用练习
    def switch_ifrname1(self):
        self.drive.get('https://qzone.qq.com/') 
         #get方法帮助我们url地址,打开浏览器
        # time.sleep(8)
        iframe1 = self.drive.find_element_by_id("login_frame") 
         #通过id定位到第一个iframe1
        self.drive.switch_to.frame(iframe1)   #进入第一个iframe
        time.sleep(3)
        self.drive.find_element_by_id('img_out_1175134916').click() 
         #通过属性定位到头像位置并点击
        time.sleep(25)
        self.drive.find_element_by_link_text('日志').click() 
         #通过超链接定位到日志并点击
        time.sleep(3)

        iframe2 = self.drive.find_element_by_class_name('app_canvas_frame') 
         #因为写日志在iframe里,所以通过属性名定位到到第二个iframe1
        self.drive.switch_to.frame(iframe2)  #进入到第二个iframe

        self.drive.find_element_by_class_name("inner_wrap").click()   #定位到写日志并点击
        time.sleep(2)
        self.drive.find_element_by_id('blog-title-input').click()
         #定位到日志标题输入框并点击
        self.drive.find_element_by_id('blog-title-input').send_keys('自动化测试') #标题输入框写入内容
        time.sleep(2)
        iframe3 = self.drive.find_element_by_id('blogContent_Iframe') #因为日志内容输入框在iframe内,所以在此定位iframe
        self.drive.switch_to.frame(iframe3)  #进入到iframe
        self.drive.find_element_by_class_name('blog_details_20120222').click()  #定位到日志内容输入框并点击
        self.drive.find_element_by_class_name('blog_details_20120222').send_keys('这是自动化搞得哦')  #给日志内容输入框写入内容
        # self.drive.switch_to.parent_frame()
        # time.sleep(2)
        # self.drive.find_element_by_id('saveBlogButton').click()

# input标签上传方法  使用send_keys
    def switch_picture(self):
        self.drive.get('https://www.bejson.com/ ')
        self.drive.find_element_by_link_text('前端').click()
        time.sleep(2)
        self.drive.find_element_by_link_text('图片压缩工具').click()
        time.sleep(2)

        self.drive.find_element_by_xpath("//input[@type='file']").send_keys('C:\\Users\\admin\\Desktop\\psb.jpg')
        time.sleep(2)





if __name__ == '__main__':
    test1 = Webdrivetest()
    test1.drag_drop()
from selenium import webdriver
import time
from selenium.webdriver import ActionChains #导入动作链
from selenium.webdriver.support.select import Select  #下拉框导入的
from selenium.webdriver.support.wait import WebDriverWait  #显示等待需导入
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

class Webdrivetest:

#下拉框语法
 def select_method(self):
        self.drive.get('http://www.woniuxy.com/live')
        #定位到下拉框菜单的位置
        target_element=self.drive.find_element_by_id('searchlivebymajor')
        #选择下拉框要打开的内容,有三种方式,
        Select(target_element).select_by_visible_text('UI全链路设计')
        #select_by_index(index) index从 0 开始
 		#select_by_value(value) value是option标签的一个属性值,并不是显示在下拉框中的值
		#select_by_visible_text(text)    visible_text是在option标签中间的值,是显示在下拉框的值



#下拉框随机取值
gender=driver.find_element_by_id('childsex')
import random Select
random_index=random.randint(0,len(Select(gender).options)-1)
Select(gender).select_by_index(random)index)




    #鼠标滚轮滚顶方式
    def do_sroll(self):
        self.drive.get('http://www.woniuxy.com/train/teacher.html')
        #定位到滚轮要到位置
        target_element = self.drive.find_element_by_xpath('//div[contains(text(),"联系我们")]')
        #关键字执行execute_script  js代码
        self.drive.execute_script('arguments[0].scrollIntoView()',target_element)


    #显示等待方式
    def webdrive_wait1(self):
        self.drive.get('http://www.woniuxy.com/train/teacher.html')
        wait1 = WebDriverWait(self.drive,30,0.5) #实例化wait对象
        iframe1=wait1.until(EC.presence_of_element_located((By.ID,'iframe_company_mini')))
        self.drive.switch_to.frame(iframe1)
        iframe2 = wait1.until(EC.presence_of_element_located((By.XPATH, '//iframe[@class="ke-edit-iframe"]')))
        self.drive.switch_to.frame(iframe2) #
        self.drive.find_element_by_xpath('/html/body').click()  # 定位到目标元素并点击
        self.drive.find_element_by_xpath('/html/body').send_keys('this is test')  # 输入要发送的内容

	
	#对时间等待参数化
    def custom_wait(self,driver,*locator,timeout=30,FREQ=0.5):
        wait = WebDriverWait(driver,timeout,FREQ)
        element = wait.until(EC.presence_of_element_located(*locator))

    def webdrive_wait2(self):
        iframe1_locator=(By.ID,'iframe_company_mini') 
         #定义变量要定位的第一个iframe
        iframe2_locator=(By.XPATH, '//iframe[@class="ke-edit-iframe"]')  #定义变量要定位的第一个iframe
        self.drive.get('http://www.woniuxy.com/train/teacher.html')
        iframe1 = self.custom_wait(self.drive,iframe1_locator) 
         #传参进入第一个iframe
        self.drive.switch_to.frame(iframe1)
        iframe2 = self.custom_wait(self.drive, iframe2_locator)
        self.drive.switch_to.frame(iframe2)
        self.drive.find_element_by_xpath('/html/body').click()  
        # 定位到目标元素并点击
        self.drive.find_element_by_xpath('/html/body').send_keys('this is test')


	    def webdrive_wait3(self):
        # iframe1_locator = (By.ID, 'iframe_company_mini')  # 定义变量要定位的第一个iframe
        # iframe2_locator = (By.XPATH, '//iframe[@class="ke-edit-iframe"]')  # 定义变量要定位的第一个iframe
        self.drive.get('http://www.woniuxy.com/train/teacher.html')
        wait = WebDriverWait(self.drive,30,0.5)
        #lamdba传递参数
        iframe1 = wait.until(lambda drive:drive.find_element_by_id('iframe_company_mini'))
        self.drive.switch_to.frame(iframe1)
        iframe2 = wait.until(lambda drive:drive.find_element_by_xpath('//iframe[@class="ke-edit-iframe"]'))
        self.drive.switch_to.frame(iframe2)
        self.drive.find_element_by_xpath('/html/body').click()  # 定位到目标元素并点击
        self.drive.find_element_by_xpath('/html/body').send_keys('this is test')  # 目标元素输入内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值