- Selenium Webdriver 教程
- 家
- 介绍
- 安装
- 浏览器导航
- 识别单个元素
- 识别多个元素
- 显式等待和隐式等待
- 弹出窗口
- 向后和向前导航
- cookie
- 例外情况
- 动作类
- 创建基本测试
- 形式
- 拖放
- 视窗
- 警报
- 处理链接
- 处理编辑框
- 颜色支持
- 在 Python 中生成 HTML 测试报告
- 从 Excel 读取/写入数据
- 处理复选框
- 在多个浏览器中执行测试
- 无头执行
- 等待支持
- 选择支持
- JavaScript 执行器
- Chrome WebDriver 选项
- 滚动操作
- 捕获屏幕截图
- 右键点击
- 双击
- Selenium Webdriver 有用资源
- Selenium WebDriver - 快速指南
- Selenium WebDriver - 有用的资源
- Selenium WebDriver - 讨论
Selenium Webdriver - 拖放
Selenium 可以在 ActionsChains 类的帮助下执行鼠标移动、按键、悬停在元素上、拖放操作等。Drag_and_drop 方法首先在源元素上按下鼠标左键,导航到目标元素,最后释放鼠标。
拖放的语法如下:
drag_and_drop(s, t)
这里,s 是按下鼠标左键的源元素,t 是目标元素。我们必须添加语句 from selenium.webdriver import ActionChains 才能使用 ActionChains 类。
让我们对以下元素执行拖放功能 -
在上图中,必须将名称为“Drag me to my target”的元素拖放到元素“Dropped!”中。
代码实现
拖放的代码实现如下 -
from selenium import webdriver from selenium.webdriver import ActionChains driver = webdriver.Chrome(executable_path='../drivers/chromedriver') #implicit wait time driver.implicitly_wait(5) driver.maximize_window() #url launch driver.get("https://jqueryui.com/droppable/") #switch to frame driver.switch_to.frame(0) #identify source element src = driver.find_element_by_css_selector("#draggable") #identify target element trgt = driver.find_element_by_css_selector("#droppable") #instance of ActionChains a= ActionChains(driver) #drag and drop then perform a.drag_and_drop(src, trgt) a.perform()
输出
执行后,名称为 - Drag me to my target 的元素已被拖放到元素 - Dropped! 中。
html 代码中的框架由frames/iframe 标签表示。Selenium 可以通过将 webdriver 访问从主页切换到框架来处理框架。
Selenium Webdriver 框架
方法
下面列出了处理帧的方法 -
driver.switch_to_frame("framename") - framename 是框架的名称。
driver.switch_to_frame("framename.0.frame1") - 用于通过用点分隔路径来访问帧中的子帧。这里,它将指向名为frame1的框架,它是名为framename的框架的第一个子框架。
driver.switch_to_default_content() - 用于将 Webdriver 访问从框架切换到主页。
让我们看看框架内元素的 html 代码。
上图中突出显示的标记名是frame,name属性的值为frame_bottom。
代码实现
处理帧的代码实现如下 -
from selenium import webdriver driver = webdriver.Chrome(executable_path='../drivers/chromedriver') #implicit wait time driver.implicitly_wait(5) #url launch driver.get("https://the-internet.herokuapp.com/nested_frames") #switch to frame driver.switch_to.frame('frame-bottom') #identify source element s = driver.find_element_by_tag_name("body") #obtain text t = s.text print('Text is: ' + t) #quit browser driver.quit()
输出
输出显示消息 - Process with exit code 0 表示上述 Python 代码执行成功。此外,框架内的文本(从文本方法获得)- BOTTOM 会打印在控制台中。