微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

selenium的高级操作

今天接着讲selenium的常见的一些操作,内容稍微有点多,慢慢细品,写的还算较为清晰,请耐心看完

一、鼠标操作

平时我们做功能测试,都是手动点击鼠标来完成,那么同样可以通过代码来完成;比如,打开百度站点左上角的新闻链接,操作鼠标即可

"""

鼠标操作:ActionChains

鼠标右击:action.context_click()
鼠标双击:action.double_click()
鼠标移动到某个节点:move_to_element()
鼠标左键按下鼠标:click_and_hold()
鼠标相对当前位置进行移动:move_by_offse()
在一个位置按下鼠标,到另外一个位置释放:drag_and_drop(ele1,ele2)

release():释放鼠标
perform():执行动作

"""
import time
from selenium.webdriver import Chrome
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver = Chrome()
driver.implicitly_wait(10)
driver.get("https://www.baidu.com/")

news_ele = driver.find_element(By.XPATH, '//a[text()="新闻"]')

# 创建一个鼠标对象
action = ActionChains(driver)
# click:点击某个元素
# 点击某个元素;此时点击的百度网站的左上角的新闻链接,实现用鼠标去点
action.click(news_ele)
# 执行动作
action.perform()

time.sleep(2)
driver.quit()

如果鼠标来悬浮拖拽怎么来实现,看下图

同样通过代码来实现

import time
from selenium.webdriver import Chrome
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver = Chrome()
driver.implicitly_wait(10)
driver.get("https://www.runoob.com/try/try.PHP?filename=jqueryui-api-droppable")

# 因为是iframe标签,所以要进行切换
frame_ele = driver.find_element(By.ID, "iframeResult")
driver.switch_to.frame(frame_ele)
ele1 = driver.find_element(By.ID, "draggable")
ele2 = driver.find_element(By.ID, "droppable")

# 创建一个鼠标对象
action = ActionChains(driver)
# 点击按住鼠标不放;在ele1处按下鼠标
action.click_and_hold(ele1)
# 移动鼠标到某个ele2上
action.move_to_element(ele2)
# 释放鼠标
action.release()

# 执行动作
action.perform()

time.sleep(2)
driver.quit()

来看运行后的效果

 当然了,这种从一个位置拖动到另一个位置,不用这么麻烦,也可以直接用一个已封装好的方法去实现:drag_and_drop(ele1,ele2),有兴趣的可以自己尝试,道理是一样的

接下来,拓展一个问题,可不可以根据坐标来移动呢?

答:是可以的

import time
from selenium.webdriver import Chrome
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver = Chrome()
driver.implicitly_wait(10)
driver.get("https://www.runoob.com/try/try.PHP?filename=jqueryui-api-droppable")

# 因为是iframe标签,所以要进行切换
frame_ele = driver.find_element(By.ID, "iframeResult")
driver.switch_to.frame(frame_ele)
ele1 = driver.find_element(By.ID, "draggable")
ele2 = driver.find_element(By.ID, "droppable")

# 创建一个鼠标对象
action = ActionChains(driver)
# 按下ele1这个元素
action.click_and_hold(ele1)
# 根据坐标来移动
action.move_by_offset(xoffset=100, yoffset=300)

# 释放鼠标
action.release()
# 执行动作
action.perform()

time.sleep(2)
driver.quit()

因此:关于selenium的鼠标操作,在此做个小总结:

1、要导入ActionChains这个类,from selenium.webdriver import ActionChains;在这个的基础上再来谈鼠标操作

2、执行动作:perform不能忘,没有这个执行动作是无法点击鼠标实现操作的

3、如果遇到iframe标签,要先切换好

4、相对于位置来移动坐标,最好不要使用,因为每种电脑屏幕的分辨率不太一样,很容易乱的

5、有些方法是已经封装好的,能简单使用就最好不要绕圈子,简单粗暴是最好用的

6、点击元素的时候,别忘了后边的括号里面传元素

7、其实说白了就是一句话;①导入ActionChains②action.方法③执行动作;想用什么方法自己去选择就行

二、选择下拉框

点击元素的时候,别忘了后边的括号里面传元素

三、键盘操作

点击元素的时候,别忘了后边的括号里面传元素

四、JS脚本操作

点击元素的时候,别忘了后边的括号里面传元素

五、窗口滚动

点击元素的时候,别忘了后边的括号里面传元素

六、窗口管理

点击元素的时候,别忘了后边的括号里面传元素

七、文件上传

点击元素的时候,别忘了后边的括号里面传元素

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐