selenium的控件定位与常见的操作

本文介绍在Web自动化测试中如何处理多窗口切换、frame切换及利用ActionChains模拟鼠标操作。涉及switch_to_window命令、swith_to_frame方法及ActionChains类的基本使用。

一.多窗口进行切换(windows窗口切换)

1.常用到的切换命令     switch_to_window

current_window_handle  用于显示当前所在窗口的位置信息
window_handles   能够显示当前所有的窗口位置信息

2.举例:以百度页面的登录为例

3.具体操作过程(1)首先获取到百度的地址

                        (2)通过id找到百度的登录按钮的位置,点击后,点击立即注册

                       (3)在点击立即注册后,会发现会弹出来一个新的窗口页面,这时候就会涉及到窗口的转化(故需要看一下所有的窗口,然后判断新跳入的窗口的位置)

                       (4)通过swith_to_window([-1])代表所查到的窗口的倒数第一个,swith_to_window([0])代表第一个

二.网页frame的多切换(在web中,如果定位一个元素找不到,大多数是在frame中,浏览器不止一个,多窗口)

1.分为嵌套和未嵌套

 (1)未嵌套:直接切换即可     swith_to_frame("id或则索引值")

  (2)嵌套:swith_to.frame("id或则索引值")   先切换到父节点   swith_to.frame("父节点")   然后切换到子节点  swith_to.frame("子节点")

2.举例:        如图:以某网站的带有Frame的元素进行简单的操作

三.ActionChains :执行PC端的鼠标点击,双击,右键,拖拽等事件

 1.首先了解其原理:当调用ActionChains时,不会立即执行,而是将所有要执行的操作按照顺序放在队列里,当调用perform()时,队列的事件会依次执行

2.基本用法:(1)生成一个动作action = ActionChains(driver)

                   (2)动作添加方法 action.方法1

                   (3)动作添加方法 action.方法2

                   (4)调用perform()执行   【action.perform()】

3.由于ActionChains有许多方法,所以在此不介绍了,具体可到官网查看           -->  https://selenium-python.readthedocs.io/

  4.同时,ActionChains也提供了很多按键操作,能够用SendKeys来实现

           练习网址:   http://sahitest.com/demo/label.htm

四.ActionChains对于H5页操作是无效的,但是TouchActions却是可以的 :模拟PC和移动端的点击,滑动,拖拽,多点触控等多种手势操作,

      在这里以百度为例,滑动到百度首页的最底端

如果在运行过程中出现不符合国际编码W3C的问题,可以通过此编码问题解决

五.表单操作

1.表单是使用标签<form>中的

2.操作步骤:与正常的获取元素是一样的

  (1)首先定位到表单元素

   (2)然后去操控元素(清空,输入或是点击的操作等)

 

 

 

 

 

### Selenium Python 常见控件操作实战教程 #### 鼠标右击操作Selenium 中,可以通过 `ActionChains` 类实现鼠标右键点击功能。以下是一个完整的示例代码用于演示如何对指定元素执行右键单击操作: ```python from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() try: driver.get("http://sahitest.com/demo/clicks.htm") element_to_right_click = driver.find_element_by_xpath('/html/body/form/input[4]') # 使用 context_click 方法模拟鼠标右击操作 ActionChains(driver).context_click(element_to_right_click).perform() sleep(3) finally: driver.quit() ``` 此代码片段展示了如何定位目标元素并对其执行鼠标右键点击操作[^2]。 --- #### 输入框操作 输入框是最常见的网页交互控件之一,在 Selenium 中可以轻松完成向输入框发送文本的操作。以下是具体实例代码: ```python from selenium import webdriver import time driver = webdriver.Chrome() try: driver.get('https://www.baidu.com') search_box = driver.find_element_by_xpath("//input[@id='kw']") search_button = driver.find_element_by_xpath("//input[@id='su']") # 向搜索框发送关键字 search_box.send_keys('Selenium') # 点击搜索按钮 search_button.click() time.sleep(5) finally: driver.quit() ``` 这段代码实现了打开百度首页、填写关键词以及触发搜索的过程[^1]。 --- #### 下拉菜单选择 对于下拉菜单的选择操作,通常会借助于 `Select` 类来处理 `<select>` 标签中的选项。下面是一段针对下拉列表的控制代码: ```python from selenium import webdriver from selenium.webdriver.support.ui import Select import time driver = webdriver.Chrome() try: driver.get("http://sahitest.com/demo/selectTest.htm") select_menu = Select(driver.find_element_by_name("selected industry")) # 通过可见文字选择项 select_menu.select_by_visible_text("Industry A") time.sleep(2) # 或者按索引选择 select_menu.select_by_index(1) time.sleep(2) # 还可通过 value 属性值选择 select_menu.select_by_value("industryB") time.sleep(2) finally: driver.quit() ``` 该脚本说明了三种不同的方式去选定某个特定条目[^2]。 --- #### 复选框单选按钮 复选框和单选按钮也是页面上的重要组成部分。这里提供一段简单的例子展示它们的基本用法: ```python from selenium import webdriver import time driver = webdriver.Chrome() try: driver.get("http://sahitest.com/demo/radio.htm") checkbox_1 = driver.find_element_by_id("c1") radio_option_a = driver.find_element_by_id("r1RadioA") # 如果未勾选则打勾 if not checkbox_1.is_selected(): checkbox_1.click() # 判断是否已选中某单项 if not radio_option_a.is_selected(): radio_option_a.click() time.sleep(3) finally: driver.quit() ``` 上述程序分别验证了两个不同类型的开关状态,并根据条件作出相应动作。 --- #### 页面滚动至可视区域 当某些元素被隐藏或者超出当前视窗范围时,可能需要先将其滚动到视野之内再做进一步的动作。这一步骤同样能够利用 JavaScript 来达成目的: ```python from selenium import webdriver import time driver = webdriver.Chrome() try: driver.get("https://xiexu.blog.youkuaiyun.com/") target_element = driver.find_element_by_partial_link_text("更多原创文章") # 执行 js 脚本来移动焦点位置 driver.execute_script("arguments[0].scrollIntoView();", target_element) time.sleep(2) # 可继续其他后续逻辑... finally: driver.quit() ``` 这个案例里包含了访问个人博客站点并将页面调整到显示“更多原创文章”的链接处[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值