本文共 3933 字,大约阅读时间需要 13 分钟。
Selenium 是一个强大的自动化测试框架,可以通过调用 WebDriver 模块控制浏览器操作。以下是创建 Chrome 浏览器实例并打开指定页面的示例代码:
from selenium import webdriverimport timedriver = webdriver.Chrome()driver.implicitly_wait(5) # 等待页面元素加载完成driver.get("http://www.baidu.com") # 打开百度首页 如果需要简单地控制浏览器,可以使用 Python 的 webbrowser 标准库。以下是打开 Internet Explorer 浏览器的示例代码:
import webbrowserwebbrowser.open("C:\\Program Files\\Internet Explorer\\iexplore.exe") # 打开 IE 浏览器 Splinter 是一个基于 Selenium 的轻量级模块,适合快速实现简单的自动化操作。安装 Splinter 以及其依赖项后,可以通过以下代码实现浏览器操作:
from splinter import Browserbrowser = Browser()browser.visit("http://www.126.com") # 打开 126 邮箱首页time.sleep(5) # 等待页面加载完成# 模拟登录操作browser.find_by_id('idInput').fill('xxxxxx') # 输入账号browser.find_by_id('pwdInput').fill('xxxxx') # 输入密码browser.find_by_id('loginBtn').click() # 点击登录按钮 Selenium 需要依赖 Cython、lxml 和 Selenium。可以通过以下链接下载安装:
Selenium 提供了多种浏览器驱动,包括 Chrome、Firefox 和 IE。创建驱动实例并打开页面的代码示例:
from selenium.webdriver import Chrome, Firefox, InternetExplorerdriver = Chrome() # 创建 Chrome 浏览器实例driver.get("http://www.baidu.com") # 打开百度首页 driver.get(url):打开指定网页。driver.find_element_by_id("id"):根据元素 ID 定位元素。driver.find_element_by_name("name"):根据元素名称定位元素。driver.find_element_by_class_name("class"):根据类名定位元素。driver.find_element_by_tag_name("tag"):根据标签名称定位元素。driver.find_element_by_link_text("text"):根据链接文本定位元素。driver.find_element_by_xpath("xpath表达式"):根据 XPath 表达式定位元素。find_element_by_id("id")find_element_by_name("name")find_element_by_class_name("class")find_element_by_tag_name("tag")find_element_by_link_text("text")find_element_by_xpath("//input[@id='kw']")find_element_by_css_selector("#kw")如果元素定位困难,可以通过组合多个属性或 XPath 表达式来精准定位。例如:
# 定位类名为 "s_ipt" 且 ID 为 "kw" 的输入框input_search = driver.find_element_by_css_selector(".s_ipt[id='kw']") 以下是模拟登录 126 邮箱的示例代码:
from selenium import webdriverimport timedriver = webdriver.Firefox()driver.get("http://www.126.com")time.sleep(3)# 定位并填写账号和密码username = driver.find_element_by_id('idInput')username.clear()username.send_keys('xxxxxx')password = driver.find_element_by_id('pwdInput')password.clear()password.send_keys('xxxxx')login_btn = driver.find_element_by_id('loginBtn')login_btn.click()time.sleep(8)# 退出登录driver.quit() 以下是模拟发送邮件的示例代码:
from selenium import webdriverimport timedriver = webdriver.Firefox()driver.get("http://www.126.com/mail")time.sleep(3)# 定位发件箱并点击email_component = driver.find_element_by_xpath("//span[contains(text(), '写 信')]")email_component.click()time.sleep(3)# 定位收件人地址栏并填写receiver = driver.find_element_by_class_name('nui-editableAddr-ipt')receiver.send_keys('xxx@163.com')# 定位主题输入栏并填写subject = driver.find_element_by_xpath("//input[@class='nui-ipt-input' and @maxlength='256']")subject.send_keys('自动化测试邮件')# 定位正文输入栏并填写body = driver.find_element_by_class_name('nui-scroll')body.send_keys('这是第一封自动化测试邮件')# 点击发送按钮send_btn = driver.find_element_by_class_name('nui-btn-text')send_btn.click()time.sleep(3)# 确认邮件发送成功assert '发送成功' in driver.page_sourcedriver.quit() 如果元素 ID 是动态变化的,可以通过 XPath 或 CSS 定位。
# 例如,动态 ID 的元素可以通过以下方式定位:input_element = driver.find_element_by_xpath("//input[@id='dynamic_id']") 如果元素不可见,可以设置显性等待或检查元素是否可见。
# 设置显性等待driver.implicitly_wait(10)# 检查元素是否可见if not element.is_displayed(): raise NoSuchElementException("元素未显示") 如果操作需要访问 iframe 内部的元素,需要先切换到 iframe。
# 定位 iframe 并切换iframe = driver.find_element_by_class_name('APP-editor-iframe')driver.switch_to_frame(iframe)# 操作 iframe 内部的元素username = iframe.find_element_by_name('userName')username.send_keys('登录名') 通过以上方法,可以轻松实现多种浏览器操作和页面元素控制。在实际使用中,根据具体需求选择合适的定位方式和浏览器驱动,确保测试脚本高效且可靠。
转载地址:http://mfnb.baihongyu.com/