模块化实例
以126邮箱来演示代码如下:
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.126.com")
#登陆
driver.find_element_by_link_text("密码登录").click()
#找到用户名和密码登录所在的frame层,这里参数为空,是因为这个frame的那么为空
driver.switch_to_frame("")
#清空文本框内容
driver.find_element_by_xpath("//*[@name='email' and @data-loginname='loginEmail']").clear()
#输入用户名
driver.find_element_by_xpath("//*[@name='email' and @data-loginname='loginEmail']").send_keys("username")
#清空文本框内容
driver.find_element_by_name("password").clear()
#输入密码
driver.find_element_by_name("password").send_keys("password")
#单击登录按钮
driver.find_element_by_id("dologin").click()
#退出当前表单层
driver.switch_to.default_content()
#退出登录
driver.find_element_by_link_text("退出").click()
#关闭网页
driver.quit()
这里126的登录好一顿找,居然表单套表单了,这里表单操作,我在“学习笔记之webdriver_API_02”中讲过,不过跳出当前表单层貌似用不了,我就在网上找了一个方法“driver.switch_to.default_content()”就跳出当前层了,我学习得视频是2013年的,可能方法比较落后,每个脚本都是我跑过一边没问题的,我才会写到这里,所以实例和概念可能有一些冲突。但是我会保证每个脚本都能跑通
将以上登录和退出代码模块化:
新建一个mail126_01的Python文件,将登录和退出模块化保存下来
#登录
#这里的driver相当于一个接口
def login(driver):
driver.find_element_by_link_text("密码登录").click()
driver.switch_to_frame("")
driver.find_element_by_xpath("//*[@name='email' and @data-loginname='loginEmail']").clear()
driver.find_element_by_xpath("//*[@name='email' and @data-loginname='loginEmail']").send_keys("username")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("password")
driver.find_element_by_id("dologin").click()
#退出
def logout(driver):
driver.switch_to.default_content()
driver.find_element_by_link_text("退出").click()
driver.quit()
新建一个mail126_diaoyong_01的Python文件:
from selenium import webdriver
#调用模块里面的登录和退出方法
from mail126_01 import login,logout
import time
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.126.com")
#测试用例
#调用登录
login(driver)
#调用退出
logout(driv