首页 > 技术文章 > python selenium 常用的命令

duanbi 2020-06-12 11:14 原文

网站测试,通俗讲就是通鼠标,键盘等操作网站的元素,完成一系列的流程。而网站自动化测试,就是将这些操作用程序来实现, 所以只需要掌握相关的命令即可上手。
详细了解自动化测试的同学,请移驾: https://www.cnblogs.com/gupao123/p/9791111.html


Driver相关 

# 引入selenium 模块
from selenium import webdriver

# 如果chrome 驱动配置到环境变量中, 直接使用
driver = webdriver.Chrome()

# 不在环境变量中,加载chrome 驱动
driver = webdriver.Chrome('chrome driver path')

# 打开页面 driver.get('地址');
driver.get('https://www.baidu.com');

#设置浏览器 宽500, 高800
driver.set_window_size(500,800)

# 全屏
driver.maximize_window()

# 后退
driver.back()

# 前进
dirver.forward()

# 刷新当前页面
driver.refresh()

# 关闭当前页面
driver.close()

# 退出(也就关闭浏览器)
driver.quit();

#当前页面title
driver.title

#当前页面URL
driver.current_url

#截取当前窗口,并指定截图图片的保存位置
driver.get_screenshot_as_file("file")

元素定位

# 通过 id 定位元素,返回定位到的第一个元素
driver.find_element_by_id("id")

# 通过 xpath 定位元素,返回定位到的第一个元素
driver.find_element_by_xpath("xpath")

# 通过超链接定位元素,返回定位到的第一个元素
driver.find_element_by_link_text("link name")

# 通过超链接定位元素(部分名称),返回定位到的第一个元素
driver.find_element_by_partial_link_text("link name")

# 通过 name 定位元素,返回定位到的第一个元素
driver.find_element_by_name("name")

# 通过 class name 定位元素,返回定位到的第一个元素
driver.find_element_by_class_name("class name")

# 通过 tag name 定位元素(很少用到),返回定位到的第一个元素
driver.find_element_by_tag_name("tag name")

# 通过 css 定位元素(很少用到),返回定位到的第一个元素
driver.find_element_by_css_selector("css")


# 通过 id 定位元素,返回定位到的元素数组
driver.find_elements_by_id("id")

# 通过 xpath 定位元素,返回定位到的元素数组
driver.find_elements_by_xpath("xpath")

# 通过超链接定位元素,返回定位到的元素数组
driver.find_elements_by_link_text("link name")

# 通过超链接定位元素(部分名称),返回定位到的元素数组
driver.find_elements_by_partial_link_text("link name")

# 通过 name 定位元素,返回定位到的元素数组
driver.find_elements_by_name("name")

# 通过 class name 定位元素,返回定位到的元素数组
driver.find_elements_by_class_name("class name")

# 通过 tag name 定位元素(很少用到),返回定位到的元素数组
driver.find_elements_by_tag_name("tag name")

# 通过 css 定位元素(很少用到),返回定位到的元素数组
driver.find_elements_by_css_selector("css")

元素操作

# 元素上的操作
element = driver.find_element_by_id('kw')

# 清空
element.clear()

# 点击
element.click()

# 输入值
element.send_keys("value")

# 获取元素的内容,页面上可看到的文字
element.text

# 元素是否选中
element.is_selected()

# 元素是否显示
element.is_displayed()

# 断是否真正处于disabled的状态
element.is_enabled()

# 获取元素属性内容, 如input value
element.get_attribute("value")

键盘操作

# 引入键盘操作模块
from selenium.webdriver.common.keys import Keys

# 删除键(BackSpace)   
element.send_keys(Keys.BACK_SPACE)

# 空格键(Space)   
element.send_keys(Keys.SPACE)

# 制表键(Tab)
element.send_keys(Keys.TAB)

# 回退键(Esc)   
element.send_keys(Keys.ESCAPE)

# 回车键(Enter)  
element.send_keys(Keys.ENTER)

# 全选(Ctrl+A)   
element.send_keys(Keys.CONTROL, 'a')

# 复制(Ctrl+C)
element.send_keys(Keys.CONTROL, 'c')

# 剪切(Ctrl+X)
element.send_keys(Keys.CONTROL, 'x')

# 粘贴(Ctrl+V)
element.send_keys(Keys.CONTROL, 'v')

# F1键 其余类似
element.send_keys(Keys.F1)

鼠标操作 

# 引入鼠标操作模块 注每个模拟事件后需加.perform() 才会执行
from selenium.webdriver.common.action_chains import ActionChains

# move_to 移动, 将鼠标移动到定位的元素上面, 悬浮状态
ActionChains(driver).move_to_element(element).perform()

# move_to 移动, 将鼠标移动到定位的元素上面,并点击
ActionChains(driver).move_to_element(element).click().perform()

# 定位元素的源位置
element = driver.find_element_by_id("xxx")
# 定位元素要移动到的目标位置
target = driver.find_element_by_id("xxx")
# 执行元素的拖放操作
ActionChains(driver).drag_and_drop(element, target).perform()

# 右击
ActionChains(driver).context_click(element).perform()

# 双击
ActionChains(driver).double_click(element).perform()

# 将鼠标移动到指定位置
ActionChains(driver).move_by_offset(100, 100).perform()

 

Frame切换

# iframe
# 选中frame: 通过 id 或 name 选中
driver.switch_to.frame('toLogin')

# 选中frame: 通过 元素, 因为有些frame上没有id 和 name, 那么通过元素定位
driver.switch_to.frame(element)

# 选中父frame
driver.switch_to.parent_frame()

# 将frame 切换到主页面,注: frame 自动关闭则,会切换到主页面
driver.switch_to.default_content()

弹框 

# 弹框
# 选择弹框
driver.switch_to_alert()

# 获取弹框内容
driver.switch_to_alert().text

# 弹框确定
driver.switch_to_alert().accept()

# 弹框取消
driver.switch_to_alert().dismiss()

浏览器窗口

# 窗口
# 获取全部窗口
handles = driver.window_handles

# 切换窗口 
driver.switch_to.window(handles[0])

以上是常用的基础命令,整理出方便查看。

 

ps: 欢迎小伙伴们关注,转发, 收藏。

推荐阅读