Python+webdriver自动化脚本的封装调用

摘要:
Python中有自我还是没有自我?如果在定义方法时添加了self,则在调用此类中的方法时必须实例化一个对象,即类(对象)。如果定义方法(参数)而不添加self,那么在调用此类的方法时可以直接调用该方法,即class()。可以直接删除方法(参数类)本身的局部变量。注意,这并不涉及上述方法中的局部变量。如果方法中的一个变量与类的局部变量同名,则方法中的局部变量将屏蔽类中的本地变量,也就是说,类中的局部变数将不再工作

Auto.py调用Respository.py中封装好的方法:

Auto.py:

#!D:Python3.7.2python.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开头的变量是类本身的局部变量)是可以被直接掉用的,注意这里不是指上面所说的方法内的局部变量(这两个命名空间不同)。如果方法中有有变量与类的局部变量同名,那么方法中的局部变量将会屏蔽类中的局部变量即类中的局部变量不再起作用
 

免责声明:文章转载自《Python+webdriver自动化脚本的封装调用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇document.cookie的使用phpStudy的相关知识与安装及搭建WordPress博客下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

如何使用 window.open() 下载文件: 在本页面打开并防止浏览器拦截

从接口请求返回的内容有两种类型:直接返回文件内容、返回url和使用窗口。open()直接打开请求地址或返回的url,然后将请求地址或所返回的url直接分配给窗口的href1。直接返回文件内容:打开请求api地址downPkg(){letmywin=window.open('',mywin.location.href=apiPath;}2。返回url时:...

Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)

在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器;一种是使用QTimer类。当定时器触发时,应用程序会发送一个QTimerEvent。与定时器相关的成员函数有:startTimer()、timeEvent()、killTimer()。virtualvoidQObject::timerEvent;虚函数timerEvent()被重载来实现用户的...

JavaMail给QQ邮箱发邮件报错

org.springframework.mail.MailAuthenticationException:身份验证失败;nestedexceptionisjavax.mail.AuthenticationFailedException:535错误:http://service.mail.qq.com/cgi-bin/help?subtype=1&&a...

以『公众号』为例,手把手教你爬取PC端数据

“appmsgext_url=origin_url+”__biz={}&mid={}&sn={}&idx={}&appmsg_token={}&x5=1“.formatcontent=requests.post.json()打印打印可以看到帖子已成功发送,并提取相应的阅读号、点赞号和观看号。5。同一个公众号被扩展。如果...

Basler相机外部触发设置(Halcon)

不要为软触发器设置grab _ Timeout Collection超时,使用C#中的set _ framegrabber_Callback设置回调方法。4.C#与Halcon合作,实现外部触发回调函数,以收集图像1HalconDotNet。HalconAPI。HFramegrabberCallbackelegateCallback;“开”);“grab_t...

通过QQ邮箱的SMTP服务器发送QQ邮件至163邮箱提示“发送邮件失败”的解决方案(三种可能性,不妨一试)

发件人:QQ邮箱收件人:163邮箱基于上述开发平台。下面列出了通过QQ邮箱的SMTP服务器向163邮箱发送QQ邮件的三种可能的解决方案,提示“发送邮件失败”。您可以尝试在163邮箱的反垃圾邮件选项中设置白名单。如果您取消SMTP服务,然后再次选中“启用”,或尝试使用该帐户在其他地方发送邮件,这可能有助于从QQ邮箱解锁帐户(待测试。我将不负责测试这种可能性导致...