Selenium操作:测试form表单

from表单是经常测试的用例,用户登录、注册等都会用到form表单,本文简单设计了一个用户登录的form表单,并对该form表单进行测试


一、自定义form表单

1、用到的组件

如下图,图中定义了一个登录界面的form表单,用到的表单元素:type="text"; type="submit"


2、代码示例

新建HTML文件

文件中输入代码

点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="javascript:alert('hello')">
    Username:<input type="text" name="username" id="username"><br>
    Password:<input type="text" name="pwd" id="pwd"><br>
    Submit:<input type="submit" value="submit" id="submit">
</form>
</body>
</html>

二、form表单测试

1、定位表单元素
(1)获取form表单路径

(a)当前文件所在路径

path = os.path.abspath(__file__)#获取当前完整路径,即绝对路径
#print(file_path)

输出:C:...\desktop\demo.py


(b)当前路径的父目录

path = os.path.dirname(os.path.abspath(__file__))#获取当前路径的父目录
print(path)

输出:C:...\desktop


(c)form表单完整路径

file_path = 'file:///'+path + '/form.html'#获取form表单完整路径
print(file_path)

输出:C:...\desktop\form.html


(2)加载form表单
self.driver.get(file_path)

2、输入测试值
测试值1:输入账号和密码并提交
username=self.driver.find_element(By.ID,"username")#定位元素
username.send_keys("admin")#账号:admin
pwd=self.driver.find_element(By.ID,"pwd")#定位元素
pwd.send_keys('123')#密码:123
sleep(2)
self.driver.find_element(By.ID,"submit").click()#提交
结果1:弹出提示框,提示“Hello”


测试值2:获取输入的账号密码
self.driver.switch_to.alert.accept()#关闭提示
print(username.get_attribute('value'))#获取输入的账号
print(pwd.get_attribute('value'))#获取输入的密码
结果2:控制台输出账号密码

测试值3:清空账号密码
username.clear()
pwd.clear()
结果3:输入框中账号密码被清空

点击查看代码
from time import sleep
from selenium import webdriver
import os
from selenium.webdriver.common.by import By

class Testcase:
    def __init__(self):
        self.driver=webdriver.Edge()
        #path = os.path.abspath(__file__)#获取当前完整路径,即绝对路径
        path = os.path.dirname(os.path.abspath(__file__)) #获取当前路径的父目录
        file_path = 'file:///'+path + '/form.html'#获取form表单完整路径
        self.driver.get(file_path)#加载form表单
        #print(file_path)

    def test_login(self):
        #用例1
        username=self.driver.find_element(By.ID,"username")#定位元素
        username.send_keys("admin")#账号:admin
        pwd=self.driver.find_element(By.ID,"pwd")#定位元素
        pwd.send_keys('123')#密码:123
        sleep(2)
        self.driver.find_element(By.ID,"submit").click()#提交

        #用例2
        self.driver.switch_to.alert.accept()#关闭提示
        print(username.get_attribute('value'))#获取输入的账号
        print(pwd.get_attribute('value'))#获取输入的密码
        
        #用例3
        username.clear()
        pwd.clear()
        sleep(2)
        self.driver.quit()

if __name__=="__main__":
    case=Testcase()
    case.test_login()