前言 在自动化测试中,对于表单的操作是至关重要的。本文将介绍一些常见的表单操作技术,使你能够更好地应对测试中的表单交互。
知识点
表单操作
输入框操作
单选框操作
复选框操作
下拉框操作
文件上传处理
submit() 方法使用
实例:使用 Selenium 进行表单操作
实训:使用 Selenium 进行表单操作
表单操作 在自动化测试中,对表单的灵活操作是确保测试准确性和可靠性的关键。下面将介绍一些常见的表单操作技术,包括输入框、单选框、复选框、下拉框、文件上传处理以及 submit()
方法的使用。
输入框操作 输入框是用户与网页进行交互的主要方式之一。
在先前的章节中,我们已经介绍了如何使用 Selenium 模拟用户输入,此处使用的方法与之前相同,即使用 send_keys()
方法。
1 2 3 4 5 6 7 from selenium.webdriver.common.by import Byinput_element = driver.find_element(By.ID, 'username' ) input_element.send_keys('your_username' )
单选框操作 单选框通常用于用户需要从一组互斥的选项中选择一个的情况。
在自动化测试中,我们可以直接定位到单选框元素,然后使用 click()
方法来选中单选框:
1 2 3 4 5 6 7 from selenium.webdriver.common.by import Byradio_button = driver.find_element(By.ID, 'male' ) radio_button.click()
复选框操作 与单选框类似,复选框允许用户选择多个选项。
在自动化测试中,我们可以直接定位到复选框元素,然后使用 click()
方法来选中复选框:
1 2 3 4 5 6 7 from selenium.webdriver.common.by import Bycheckbox = driver.find_element(By.ID, 'subscribe' ) checkbox.click()
下拉框操作 下拉框(或选择框)是一种常见的表单元素,用户可以从中选择一个或多个选项。
在自动化测试中,我们可以使用 Selenium 的 Select
类来进行下拉框的操作:
1 2 3 4 5 6 7 8 9 10 11 from selenium.webdriver.support.ui import Selectfrom selenium.webdriver.common.by import Bydropdown = driver.find_element(By.ID, 'country' ) select = Select(dropdown) select.select_by_value('your_option_value' )
Select 类提供了多种方法来选择下拉框中的选项,包括:
select_by_index()
:通过选项的索引来选择选项。
select_by_value()
:通过选项的值来选择选项。
select_by_visible_text()
:通过选项的可见文本来选择选项。
文件上传处理 在网页中,文件上传是一种常见的表单操作。
通常情况下,上传文件的表单元素是一个 <input>
标签,其 type
属性值为 file
。
我们可以直接定位到该元素,然后使用 send_keys()
方法向该元素发送文件路径,即可完成文件上传操作:
1 2 3 4 5 6 7 from selenium.webdriver.common.by import Byfile_input = driver.find_element(By.ID, 'fileUpload' ) file_input.send_keys('path/to/your/file.txt' )
但有些网页会使用 JavaScript 或其他技术来隐藏文件上传的输入框元素,此时就需要第三方库来模拟文件上传操作。
submit()
方法使用submit()
方法用于模拟用户点击表单的提交按钮。
通过找到表单元素,我们可以直接调用该元素的 submit()
方法:
1 2 3 4 5 6 7 from selenium.webdriver.common.by import Byform_element = driver.find_element(By.ID, 'myForm' ) form_element.submit()
实例:使用 Selenium 进行表单操作 在配套网页——实训:使用 Selenium 进行表单操作 中,我们将演示如何使用 Selenium 进行表单操作。
打开配套网页 打开 实训:使用 Selenium 进行表单操作 网页:
如上图所示,网页中有一个表单,包含了文本输入(输入框)、单选框、复选框、下拉框、文件上传等表单元素。
在上传图片 (png, jpeg
) 时,网页将显示图片:
在上传其他文件时,网页将显示 <a>
标签,地址指向上传的文件:
由于网页项目是无后端的,因此上传的文件不会真正保存到服务器上。
提交表单后,网页将显示表单中的数据:
编写脚本 1. 前置操作 1 2 3 4 5 6 7 8 9 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select driver = webdriver.Chrome() driver.get("https://selenium-app.im0o.top/form-example" )
2. 获取表单元素 1 2 form_element = driver.find_element(By.XPATH, '//*[@id="app"]/div/form' )
3. 向输入框中输入文本 1 2 3 4 5 input_element = driver.find_element(By.ID, 'textinput' ) input_element.send_keys('这是内容' )
4. 选择单选项 1 2 3 4 5 radio_button = driver.find_element(By.ID, 'radio-1' ) radio_button.click()
5. 选择复选项 1 2 3 4 5 checkbox = driver.find_element(By.ID, 'checkbox-1' ) checkbox.click()
6. 选择下拉框选项 1 2 3 4 5 6 7 8 dropdown = driver.find_element(By.ID, 'select' ) select = Select(dropdown) select.select_by_value('选项 2' )
7. 上传文件 1 2 3 4 5 file_input = driver.find_element(By.ID, 'file' ) file_input.send_keys('D:/test.txt' )
8. 提交表单
9. 关闭浏览器
完整代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select driver = webdriver.Chrome() driver.get("https://selenium-app.im0o.top/form-example" ) form_element = driver.find_element(By.XPATH, '//*[@id="app"]/div/form' ) input_element = driver.find_element(By.ID, 'textinput' ) input_element.send_keys('这是内容' ) radio_button = driver.find_element(By.ID, 'radio-1' ) radio_button.click() checkbox = driver.find_element(By.ID, 'checkbox-1' ) checkbox.click() dropdown = driver.find_element(By.ID, 'select' ) select = Select(dropdown) select.select_by_value('选项 2' ) file_input = driver.find_element(By.ID, 'file' ) file_input.send_keys('D:/test.txt' ) form_element.submit() input ("按 Enter 键退出" )driver.quit()
运行脚本
实训:使用 Selenium 进行表单操作 在同样的页面中,请编写脚本,完成以下操作:
引入 By 类和 Select 类。
通过 ID 定位到输入框元素,向输入框中输入文本 Sample
。
通过 XPATH 定位到第二个单选框元素,选中该单选框。
通过 XPATH 定位到第二、三个复选框元素,选中这两个复选框。
通过 ID 定位到下拉框元素,选择第三个选项。
定位到文件上传输入框元素,上传任意 jpeg/png
文件。
定位到表单元素并提交表单。
获取跳转后的内容,输出到控制台。
提示
对于下拉框,使用 Select 类的方法进行选项选择。
文件上传时,使用 send_keys 方法发送文件路径,确保文件存在。
参考答案
点击展开
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import Selectdriver = webdriver.Chrome() driver.get("https://selenium-app.im0o.top/form-example" ) input_element = driver.find_element(By.ID, 'textinput' ) input_element.send_keys('Sample' ) radio_button = driver.find_element(By.XPATH, '//*[@id="radio-2"]' ) radio_button.click() checkbox1 = driver.find_element(By.XPATH, '//*[@id="checkbox-2"]' ) checkbox2 = driver.find_element(By.XPATH, '//*[@id="checkbox-3"]' ) checkbox1.click() checkbox2.click() dropdown = driver.find_element(By.ID, 'select' ) select = Select(dropdown) select.select_by_value('选项 3' ) file_input = driver.find_element(By.ID, 'file' ) file_input.send_keys("D:\\UserData\\Pictures\\icon\\smile.png" ) form_element = driver.find_element(By.XPATH, '//*[@id="app"]/div/form' ) form_element.submit() result_element = driver.find_element(By.ID, 'form-example-result' ) print (result_element.text)input ("按 Enter 键退出" )driver.quit()
At Last 头图/封面素材来源:Photo by Kelly Sikkema on Unsplash