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 = 'http://ics.chinasoftosg.com/SignOnServlet' username = '159853' password = 'Nancy2018?' 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("豬太肥001") browser.find_element_by_id('pwd').send_keys("Nancy2018") browser.find_element_by_xpath("//button[@type='submit']").click()
Python中定義方法時,self怎么理解?
在定義方法的時候有一個self參數,在所有的方法聲明中都要用到這個參數,這個參數代表實例對象本身,當你用實例調用方法的時候,由解釋器自動的把實例對象本身悄悄的傳遞給方法,不需要你自己傳遞self進來,例如有一個帶有兩個參數的方法,你所有調用只需要傳遞進來兩個參數。
Python中有self和沒有self的問題?
定義方法的時候加了self,那么在調用這個類中的方法時就必需要實例化一個對象,即:類(對象).方法(參數)
定義方法的時候沒有加self,那么調用這個類的方法時就可以直接調用方法,即:類().方法(參數)
類本身的局部變量(個人的認為定義在方法以外不以self開頭的變量是類本身的局部變量)是可以被直接掉用的,注意這里不是指上面所說的方法內的局部變量(這兩個命名空間不同)。如果方法中有有變量與類的局部變量同名,那么方法中的局部變量將會屏蔽類中的局部變量即類中的局部變量不再起作用