今天接着讲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] 举报,一经查实,本站将立刻删除。