Selenium(1) - 常用操作

Selenium是一个用于Web应用程序测试的自动化框架,它可以模拟用户操作,如点击、输入等。通过实例化WebDriver并设置浏览器驱动,可以打开网站并进行自动化操作。元素的选择包括通过ID、名称、类名等属性,以及使用CSS选择器和XPath路径。文章还介绍了各种浏览器和元素的操作,如窗口管理、鼠标和键盘模拟、切换窗口和框架,以及等待策略。
摘要由CSDN通过智能技术生成

Selenium笔记

Selenium是一个针对Web应用的自动化框架,它能够让使用者编写出自动化程序,可以像人一样的对浏览器进行操作,如点击按钮、输入文本等等。
它还可以像爬虫一样自动获取网站的信息。

一、简单的例子

​ 实例化一个WebDriver对象,并指明浏览器驱动

wd = webdriver.Chrome('浏览器驱动路径')
# 使用.get()可以打开指定网站
wd.get(url)

# 当连续操作web时,浏览器可能来不及反应,这时可以用该语句设置隐式等待,当没有立即发现目标元素时会过半秒再尝试一次
WebDriver.implicitly_wait(10)

二、选择元素

web界面自动化,想要操控目标元素,首先就要【选择】界面元素,或者说【定位】界面元素,就是告诉浏览器,你要操作【哪个】元素,让它找到你要操作的界面元素。所以我们必须要让浏览器先找到元素,然后才能操作元素。

1.开发者工具

使用开发者窗口,鼠标定位到目标元素,获取目标元素的信息,如标签名、class、id和name等等。
可以根据唯一的属性名去选择特定元素

# 根据属性选择对象,返回元素对应的WebElement对象
element = wd.find_element_by_id('id值')
element = wd.find_element_by_name('name值')
element = wd.find_element_by_class_name('class值')
element = wd.find_element_by_tag_name('tag值')
element = wd.find_element_by_link_text('链接名')
element = wd.find_elements_by_partial_link_text(link_text)

以上定位方法都只返回一个对象,如果找到多个则返回第一个对象,如果需要选择多个元素,则将以上方法中的element加s,如:

element = wd.find_elements_by_class_name('class值')

并且element找不到元素时会抛出异常,elemenets找不到元素时则返回空列表。当调用方法的对象不同时,寻找的范围也不一样。

WebDriver.find_element_by_xxx    # 的范围是整个网页
WebElement.find_element_by_xxx   # 的范围是对应元素的内部

2.CSS选择器

可以用css的语法来选择目标元素

# 获取单个元素,如果是搜索id,则参数=#id值
find_element_by_css_selector(CSS Select参数)
# 获取一组元素
find_elements_by_css_selector(CSS Select参数)

find_element_by_css_selector('div')
# 上一条等价于下一条
find_element_by_tag_name('div')

3.XPath路径

XPath能更好的选取目标元素

#find_element_by_xpath('xpath路径')
4.定位
WebDriver.presence_of_element_located((type, type_value))

三、各类操作

1.浏览器

    WebDriver.set_window_size()   # 设置浏览器的大小
    WebDriver.maximize_window()   # 最大化
    WebDriver.fullscreen_window() # 全屏显示
    WebDriver.back()              # 后退
    WebDriver.forward()           # 前进
    WebDriver.refresh()           # 刷新
    WebDriver.window_handles      # 返回当前浏览器所有窗口的句柄列表
    WebDriver.title               # 返回当前页面的标题

2.元素

    WebElement.clear()            # 清除文本
    WebElement.send_keys (value)    # 模拟按键输入
    WebElement.click()            # 单击元素
    WebElement.submit()             # 用于提交表单
    WebElement.get_attribute(name)  # 获取元素属性值
    WebElement.is_displayed()       # 设置该元素是否用户可见
    WebElement.size                 # 返回元素的尺寸
    WebElement.text                 # 获取元素的文本

3.鼠标

在Selenium中,模拟鼠标的方法都封装在了ActionChains类中。

ActionChains(driver)     # 构造ActionChains对象
click()                  # 左键单击
context_click()             # 右击
double_click()             # 左键双击
click_and_hold()         # 点击鼠标左键,按住不放
release(on_element=None) # 在某个元素位置松开鼠标左键
drag_and_drop(source, target)     # 拖动某个元素至目标元素处
move_to_element(element)         # 鼠标移动到某个元素
move_by_offset(xoffset, yoffset) # 鼠标移动到距离当前位置(x,y)的地方
move_to_element_with_offset(to_element, xoffset, yoffset) #将鼠标移动到距某个元素多少距离的位置
perform()               # 执行所有 ActionChains 中存储的行为

4.键盘

键盘操作的方法基本上都是send_keys(),只是括号中的值不同而已

send_keys(Keys.BACK_SPACE)    # 删除键(BackSpace)
send_keys(Keys.SPACE)         # 空格键(Space)
send_keys(Keys.TAB)           # 制表键(Tab)
send_keys(keys.ESCAPE)        # 回退键(Esc)
send_keys(Keys.ENTER)         # 回车键(Enter)
send_keys(Keys.CONTROL,'a')   # Ctrl+A
send_keys(Keys.ALT,'c')       # Alt+C
send_keys(Keys.F1)            # 键盘F1
key_down(value, element=None) # 按下某个键盘上的键
key_up(value, element=None)   # 松开某个键

5.切换

WebDriver默认指向第一个窗口页面的,而在很多时候,我们需要跳转到其他页面去完成任务。倘若新页面是覆盖原页面,那不需要跳转,只需等待页面加载完毕即可。而如果新页面在新窗口中打开,那么就需要让驱动切换窗口,然后再进行操作。

WebDriver.switch_to.window(window_handle)

并且WebDriver不仅默认指向第一个窗口页面,假若该页面中还存在有多个iframe,它也会指向第一个iframe,当我们搜索元素时,是无法活的其他iframe中的元素的,也需要先切换到目标iframe中再进行element_find_

WebDriver.switch_to.frame(frame_reference)

6.调用JavaScript

​ WebDriver.execute_script(js语句)

三、等待

1.显式等待 WebDriverWait()

WebDriverWait(driver, timeout)
# driver 目标浏览器驱动
# timeout 最长超时时间

# 通常与until(), until_not()等一起使用
WebDriverWait(driver, timeout).until(method, message='')
# 表示每timeout秒执行一次method,如果成立,则结束等待进入下一步操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

川涂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值