> 技术文档 > Selenium基础教程

Selenium基础教程


1.Selenium环境安装

1.1 浏览器安装

Chrome和ChromeDriver下载地址: https://googlechromelabs.github.io/chrome-for-testing/

注意:驱动版本号要和浏览器版本号一致;

安装后关闭浏览器自动更新: services.msc:打开系统服务找到和 google 相关的服务,全部修改为禁用

1.2 安装第三方库selenium

pip install selenium

2.创建浏览器设置、打开

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Service# 创建设置浏览器的对象q1 = Options()# 禁用沙盒模式q1.add_argument(\'--no-sandbox\')# 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭)q1.add_experimental_option(name=\'detach\', value=True)# 创建并启动浏览器a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1)

3.打开网页、关闭网页、关闭浏览器

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Serviceimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性 q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'http://www.baidu.com/\')time.sleep(3)# 关闭当前标签页,get打开的网址a1.close()# 退出浏览器,释放浏览器驱动a1.quit()

4.浏览器的最大化和最小化

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Serviceimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')time.sleep(2)# 浏览器最小化a1.minimize_window()time.sleep(2)# 浏览器最大化a1.maximize_window()

5.浏览器的打开位置和尺寸

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Serviceimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# 浏览器打开位置a1.set_window_position(20, 20)# 浏览器窗口尺寸a1.set_window_size(600, 800)time.sleep(2)a1.set_window_rect(10, 10, 800, 1000)

6.浏览器截图和刷新当前网页

a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')a1.maximize_window()# 浏览器截图,保存a1.get_screenshot_as_file(\'1.png\')time.sleep(3)# 刷新网页a1.refresh()

7.元素定位

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# 定位一个元素,找到会返回结果,找不到会报错el = a1.find_element(By.NAME, \'j_username\')print(el)# el = a1.find_element(By.CLASS_NAME, \'lui_login_input_username\')# print(el)# 定位多个元素(找到返回列表, 找不到返回空列表)els = a1.find_elements(By.NAME, \'j_password\')print(els)# 浏览器查找多个元素(F12 控制台查找)# document.getElementsByName(\'j_username\')# document.getElementsByName(\'j_password\')

8.元素交互操作

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# 定位一个元素,找到会返回结果,找不到会报错username = a1.find_element(By.NAME, \'j_username\')print(username)password = a1.find_element(By.NAME, \'j_password\')print(password)btn_login = a1.find_element(By.CLASS_NAME, \'lui_login_button_div_c\')print(btn_login)# 元素清空username.clear()password.clear()# 元素输入(输入登录用户名和密码)username.send_keys(\"xxxxxx\")password.send_keys(\"xxxxxx\")# 元素点击(点击登录按钮)btn_login.click()

9.元素定位ID

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# 通过ID查找元素,并获取元素的属性 get_property 和 get_attribute 获取的结果是一样的# <img src=\"/resource/customization/images/login_single_random/single_random_login_bg1.jpg?s_cache=8363826120466\"# id=\"login-bgImg\" alt=\"\" style=\"height: 690px; width: 1226.67px; left: -123.5px; top: 0px;\">bgImg = a1.find_element(By.ID, \'login-bgImg\')print(bgImg.get_attribute(\'src\')) # https://xxxxxx.com/resource/customization/images/login_single_random/single_random_login_bg1.jpg?s_cache=348091741757print(bgImg.get_dom_attribute(\'src\')) # /resource/customization/images/login_single_random/single_random_login_bg1.jpg?s_cache=348091741757print(bgImg.get_property(\'src\')) # https://xxxxxx.com/resource/customization/images/login_single_random/single_random_login_bg1.jpg?s_cache=348091741757print(bgImg.get_property(\'style\')) # [\'height\', \'width\', \'left\', \'top\']print(bgImg.get_property(\'height\')) # 1080print(bgImg.get_attribute(\'height\')) # 1080

10.元素定位-NAME

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# el = a1.find_element(By.NAME, \'j_password\')el.send_keys(\'12345678\')print(el.get_property(\'type\'))print(el.get_attribute(\'type\'))

11.元素定位-CLASS_NAME

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# # 注意:CLASS_NAME 定位的value值不能有空格el = a1.find_element(By.CLASS_NAME, \'lui_login_input_password\')el.send_keys(\'12345678\')print(el.get_property(\'type\'))print(el.get_attribute(\'type\'))

12.元素定位-TAG_NAME

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# TAG_NAME 按标签名字查找;元素特别多,需要切片处理el = a1.find_elements(By.TAG_NAME, \'input\')for item in el: print(item.get_property(\'name\'))

13.元素定位-LINK_TEXT和PARTIAL_LINK_TEXT

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# LINK_TEXT 按连接文本 (<a 标签) 的内容查找# 苏ICP备12002088号-4# 精准定位# el = a1.find_element(By.LINK_TEXT, \'苏ICP备12002088号-4\')# 模糊文本定位el = a1.find_element(By.PARTIAL_LINK_TEXT, \'苏ICP备\')print(el.get_property(\'href\')) # https://beian.miit.gov.cn/

14.元素定位-CSS_SELECTOR

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# CSS_SELECTOR 按连接文本 (<a 标签) 的内容查找# 1. #id = #号 + id值 通过id定位# 2. .class = 点 + class值 通过class定位# 3. 不加修饰符 = 标签头 通过标签头定位# 4. 任意类型 = \"[类型=\'精准值\']\" 通过任意类型定位# 5. 任意类型 = \"[类型*=\'模糊值\']\" 通过任意类型定位(模糊值)# 6. 任意类型 = \"[类型^=\'开头值\']\" 通过任意类型定位(开头值)# 7. 任意类型 = \"[类型$=\'结尾值\']\" 通过任意类型定位(结尾值)# 以上方法都属于理论定位方法# 8. 在谷歌控制台直接复制 Selector (唯一);个别元素的selector会比较长# <img src=\"/resource/customization/images/login_single_random/single_random_login_bg1.jpg?s_cache=3115333429515\"# id=\"login-bgImg\" alt=\"\" style=\"height: 1080px; width: 1920px; left: 0px; top: -324px;\">el1 = a1.find_element(By.CSS_SELECTOR, \'#login-bgImg\')print(el1.get_property(\'src\'))el8 = a1.find_element(By.CSS_SELECTOR, \'#login-bgImg\') # selectorprint(el8.get_property(\'src\'))# <input type=\"text\" name=\"j_username\" class=\"lui_login_input_username\"# onfocus=\"this.select();\" value=\"\" placeholder=\"用户名\" autocomplete=\"off\">el2 = a1.find_element(By.CSS_SELECTOR, \'.lui_login_input_username\')print(el2.get_attribute(\'name\'))el3 = a1.find_elements(By.CSS_SELECTOR, \'img\')print(el3)el4 = a1.find_element(By.CSS_SELECTOR, \"[name=\'j_password\']\")print(el4.get_property(\'name\'))el5 = a1.find_element(By.CSS_SELECTOR, \"[name*=\'j_user\']\")print(el5.get_property(\'name\'))el6 = a1.find_elements(By.CSS_SELECTOR, \"[name^=j_]\")for item in el6: print(\'EL6:\', end=\'\') print(item.get_property(\'name\'))el7 = a1.find_element(By.CSS_SELECTOR, \"[name$=word]\")print(\'EL7:\', end=\'\')print(el7.get_property(\'name\'))

15.元素定位-XPATH

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')# 浏览器复制xpath(属性+路径)# 浏览器复制完整Xpath (可以精准定位,缺点是路径比较长)el = a1.find_element(By.XPATH, \'/html/body/div[1]/div[3]/div[1]/div[2]/div/form/table/tbody/tr[2]/td[2]/div/input\')print(el.get_attribute(\'name\'))

16.元素定位练习

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) # 元素定位隐形等待(10s内找到定位元素,没找到报错) a1.implicitly_wait(10) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')a1.maximize_window()# 输入账号a1.find_element(By.XPATH, \'/html/body/div[1]/div[3]/div[1]/div[2]/div/form/table/tbody/tr[2]/td[2]/div/input\')\\ .send_keys(\'xxxxxx\')# 输入密码a1.find_element(By.XPATH, \'/html/body/div[1]/div[3]/div[1]/div[2]/div/form/table/tbody/tr[3]/td[2]/div/input\')\\ .send_keys(\'xxxxxx\')# 点击登录a1.find_element(By.XPATH, \'/html/body/div[1]/div[3]/div[1]/div[2]/div/form/table/tbody/tr[5]/td/a/div/div/div\').click()# <img src=\"/sys/person/image.jsp?personId=186c422b80e3f7e40b7b8334d4e863d7&size=b&s_time=1678392023935\"# id=\"sys_person_userpic_img\">el = a1.find_element(By.ID, \'sys_person_userpic_img\')if el: print(el.get_attribute(\'src\'))# 
# 常用查询
# 点击常用查询el = a1.find_element(By.XPATH, \'//*[@id=\"p_bca6a2d1bb12dc30c63a\"]/div/div[2]/div/div/div[2]/div/div/span\')if el: el.click()# 点击定制数据报表el = a1.find_element(By.CSS_SELECTOR, \'#lui-id-66 > ul > li:nth-child(1) > a\')if el: el.click()

17.获取句柄、切换标签页

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) # 元素定位隐形等待(10s内找到定位元素,没找到报错) a1.implicitly_wait(10) return a1a1 = setUp()# 打开指定网址a1.get(url=\'https://xxxxxx.com/\')a1.maximize_window()# 输入账号a1.find_element(By.XPATH, \'/html/body/div[1]/div[3]/div[1]/div[2]/div/form/table/tbody/tr[2]/td[2]/div/input\')\\ .send_keys(\'xxxxxx\')# 输入密码a1.find_element(By.XPATH, \'/html/body/div[1]/div[3]/div[1]/div[2]/div/form/table/tbody/tr[3]/td[2]/div/input\')\\ .send_keys(\'xxxxxx\')# 点击登录a1.find_element(By.XPATH, \'/html/body/div[1]/div[3]/div[1]/div[2]/div/form/table/tbody/tr[5]/td/a/div/div/div\').click()# 点击携物外出el = a1.find_element(By.XPATH, \'/html/body/div[4]/div[1]/table[2]/tbody/tr/td[3]/div/div/div[3]/div/div/div[1]/div/div[1]/div/div/ul/li[5]/a\')if el: el.click()# 获取全部标签页句柄all_handles = a1.window_handlesprint(all_handles)# 关闭之前标签页a1.close()# 切换到新打开的标签页a1.switch_to.window(all_handles[1])# 勾选携出a1.find_element(By.XPATH, \'/html/body/table/tbody/tr/td[1]/div/form/div[2]/div/div[1]/div[1]/div[2]/div/div/div/div[1]\' \'/div/div/div/xformflag[1]/table/tbody/tr[3]/td[2]/div/xformflag/select/option[2]\').click()# 常用意见选择:同意a1.find_element(By.XPATH, \'/html/body/table/tbody/tr/td[1]/div/form/div[2]/div/div[1]/div[3]/div[2]/div/div/div/div[1]\' \'/div/div[2]/table/tbody/tr[10]/td[2]/table/tbody/tr[1]/td/select/option[2]\').click()# 携出日期a1.find_element(By.XPATH, \'/html/body/table/tbody/tr/td[1]/div/form/div[2]/div/div[1]/div[1]/div[2]/div/div/div/div[1]\' \'/div/div/div/xformflag[3]/div/table/tbody/tr[3]/td[2]/label/xformflag/div/div[1]/input\')\\ .send_keys(\'2025-07-01\')# 携出目的 出差a1.find_element(By.XPATH, \'/html/body/table/tbody/tr/td[1]/div/form/div[2]/div/div[1]/div[1]/div[2]/div/div/div/div[1]\' \'/div/div/div/xformflag[3]/div/table/tbody/tr[1]/td[2]/div/xformflag/label[1]/span\').click()# 携出地点 深圳a1.find_element(By.XPATH, \'/html/body/table/tbody/tr/td[1]/div/form/div[2]/div/div[1]/div[1]/div[2]/div/div/div/div[1]\' \'/div/div/div/xformflag[3]/div/table/tbody/tr[4]/td[2]/div[1]/xformflag/select/option[2]\')\\ .click()# 携出原因a1.find_element(By.XPATH, \'/html/body/table/tbody/tr/td[1]/div/form/div[2]/div/div[1]/div[1]/div[2]/div/div/div/div[1]\' \'/div/div/div/xformflag[3]/div/table/tbody/tr[4]/td[4]/div[1]/xformflag/input\')\\ .send_keys(\'出差办公\')

18.alert弹出框

前端代码:

 const alertFunc = ()=>{ alert(\'This is an test\') } 点击弹出alert

测试代码:

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) # 元素定位隐形等待(10s内找到定位元素,没找到报错) a1.implicitly_wait(10) return a1a1 = setUp()# 打开指定网址a1.get(url=\'http://localhost:9000/\')el = a1.find_element(By.XPATH, \'//*[@id=\"app\"]/button/span\')el.click()time.sleep(2)# 获取弹窗的提示内容print(a1.switch_to.alert.text)# 点击确认# a1.switch_to.alert.accept()# 点击取消a1.switch_to.alert.dismiss()

19.confirm弹出框

前端代码:

 const confirmFunc = ()=>{ let ret = confirm(\'确认要删除此选项吗?\') if(ret){ console.log(\'确定删除\') }else{ console.log(\'取消删除\') } } confirm弹出框

测试代码:

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) # 元素定位隐形等待(10s内找到定位元素,没找到报错) a1.implicitly_wait(10) return a1a1 = setUp()# 打开指定网址a1.get(url=\'http://localhost:9000/\')el = a1.find_element(By.XPATH, \'//*[@id=\"app\"]/button/span\')el.click()time.sleep(2)# 获取弹窗的提示内容print(a1.switch_to.alert.text)

20.提示框(prompt)元素交互

前端代码:

 const promptFunc = ()=>{ let name = prompt(\"请输入您的名字\", \"xiaohua\"); if (name) { console.log(`你好, ${name}!`); } else { console.log(\"用户取消了输入\"); } } prompt弹出框

测试代码:

from selenium import webdriver # 用于操作浏览器from selenium.webdriver.chrome.options import Options # 用于设置浏览器from selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byimport timedef setUp(): # 创建设置浏览器的对象 q1 = Options() # 禁用沙盒模式(增加兼容性) q1.add_argument(\'--no-sandbox\') # 保持浏览器打开状态(默认代码执行完毕,浏览器会关闭) q1.add_experimental_option(name=\'detach\', value=True) # 创建并启动浏览器 a1 = webdriver.Chrome(service=Service(\'chromedriver.exe\'), options=q1) # 元素定位隐形等待(10s内找到定位元素,没找到报错) a1.implicitly_wait(10) return a1a1 = setUp()# 打开指定网址a1.get(url=\'http://localhost:9000/\')el = a1.find_element(By.XPATH, \'//*[@id=\"app\"]/button/span\')el.click()time.sleep(2)# 获取弹窗的提示内容print(a1.switch_to.alert.text)# 弹窗输入内容a1.switch_to.alert.send_keys(\'alex lei\')# 点击确认a1.switch_to.alert.accept()# 点击取消# a1.switch_to.alert.dismiss()