Python+webdriver自动化脚本的封装调用
Auto.py调用Respository.py中封装好的方法:
Auto.py:
#!D:\Python3.7.2\python.exe #-*-coding:utf-8-*- from selenium import webdriver import time from Respository import Function url = '*******' username = '*******' password = '*******' driver = webdriver.Chrome() Function().F1(username,password,url,driver) Function().F2(driver)
Respository.py:
import time class Function(): def F1(self,username,password,url,driver): driver.get(url) driver.maximize_window() driver.find_element_by_name('userName').send_keys(username) driver.find_element_by_id('password').click() driver.find_element_by_id('password').send_keys(password) driver.find_element_by_css_selector('.button').click() def F2(self,driver): driver.find_element_by_xpath("//div[@id='apDiv33']").click() time.sleep(3) handles = driver.window_handles driver.switch_to.window(handles[1]) driver.find_element_by_xpath("//div[@class='l-accordion-content']/a[8]").click() time.sleep(5) driver.find_element_by_xpath("//div[@class='l-accordion-content']/a[6]").click()
Test.py调用Public.py封装好的方法:
Test.py:
#-*-coding:utf-8-*- from selenium import webdriver import time from Public import Loginzxw driver = webdriver.Chrome() Loginzxw().login(driver) time.sleep(3) driver.quit()
Public.py:
#-*-coding:utf-8-*- from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class Loginzxw(): def login(self,browser): url = "https://www.*****.net" browser.get(url) browser.maximize_window() element = WebDriverWait(browser,10,0.5).until(EC.presence_of_element_located((By.LINK_TEXT, "登录"))) browser.find_element_by_link_text("登录").click() browser.find_element_by_id('loginStr').send_keys("****") browser.find_element_by_id('pwd').send_keys("****") browser.find_element_by_xpath("//button[@type='submit']").click()
Python中定义方法时,self怎么理解?
在定义方法的时候有一个self参数,在所有的方法声明中都要用到这个参数,这个参数代表实例对象本身,当你用实例调用方法的时候,由解释器自动的把实例对象本身悄悄的传递给方法,不需要你自己传递self进来,例如有一个带有两个参数的方法,你所有调用只需要传递进来两个参数。
Python中有self和没有self的问题?
定义方法的时候加了self,那么在调用这个类中的方法时就必需要实例化一个对象,即:类(对象).方法(参数)
定义方法的时候没有加self,那么调用这个类的方法时就可以直接调用方法,即:类().方法(参数)
类本身的局部变量(个人的认为定义在方法以外不以self开头的变量是类本身的局部变量)是可以被直接掉用的,注意这里不是指上面所说的方法内的局部变量(这两个命名空间不同)。如果方法中有有变量与类的局部变量同名,那么方法中的局部变量将会屏蔽类中的局部变量即类中的局部变量不再起作用
钟声敲响了日落,柏油路跃过山坡,一直通向北方的是我们想象,长大后也未曾经过~