前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium4+Python3系列(八) - Cookie、截图、单选框及复选框处理、富文本框、日历控件操作

Selenium4+Python3系列(八) - Cookie、截图、单选框及复选框处理、富文本框、日历控件操作

作者头像
软件测试君
发布2022-12-05 17:42:30
2.5K0
发布2022-12-05 17:42:30
举报
文章被收录于专栏:测试人生测试人生

作者 / 糖小幽

排版 / 糖小幽

文章字数 / 3644

阅读时长 / 5分钟

我所在的城市昨天出了近20+的阳性案例,但这丝毫没有 影响996的工作时间,当然,也没有影响到我想继续更新文章的决心。

一、cookie常用操作入门

上一篇有写过关于cookie的实战案例,个人觉得没有很好地照顾到入门同学的感受,所以就又更新了关于cookie的基本使用操作。

1、获取所有cookie信息

示例代码:

代码语言:javascript
复制
cookies = driver.get_cookies()
for cookie in cookies:
    #### 遍历cookie
    print(cookie)

print('集合长度:' + str(len(cookies)))
2、删除所有cookie信息

示例代码:

代码语言:javascript
复制
driver.delete_all_cookies()
cookies = driver.get_cookies()
print('删除后cookies集合长度:' + str(len(cookies)))
3、添加cookie

JSON很像,必须有namevalue值,python叫字典,示例代码:

代码语言:javascript
复制
cookie = {'name': 'login', 'value': 'true'}
driver.add_cookie(cookie)
4、获取指定名称的cookie信息

示例代码:

代码语言:javascript
复制
login_cookie = driver.get_cookie('login')
print('取出刚添加的cookie值: ' + str(login_cookie))
5、删除指定名称的cookie信息

示例代码:

代码语言:javascript
复制
driver.delete_cookie("login")
cookies = driver.get_cookies()
#删除login后,应该就没cookie了
print(cookies)

二、截图操作

1、获取当前屏幕截图,使用完整路径,文件名以时间命名

示例代码:

代码语言:javascript
复制
nowTime = time.strftime("%Y%m%d%H%M%S")
driver.get_screenshot_as_file('%s.png' % nowTime)
2、保存屏幕截图

示例代码:driver.save_screenshot("testbaidu.png")

3、获取当前屏幕截图base64编码字符串

示例代码:

代码语言:javascript
复制
driver.save_screenshot("testbaidu.png")
print(driver.get_screenshot_as_base64())
4、获取当前屏幕截图的二进制文件数据

示例代码:

代码语言:javascript
复制
print(driver.get_screenshot_as_png())

三、单选框及复选框处理

判断是否选中:is_selected(),有时单选框、复选框会有默认选中的情况,那么有必要在操作单选框或者复选框的时候,先判断选项框是否为选中状态。使用element.is_selected()来获取元素是否为选中状态,返回结果为布尔类型,如果为选中状态返回True,如果未选中返回为False

至于操作就不必多说了,对大家来讲是So Easy,就点击就可以了。

1、单选框

示例代码;

代码语言:javascript
复制

**# 获取第1个单选框李白元素对象
element = driver.find_element(By.CSS_SELECTOR,"[value='0']")
isSelected = element.is_selected()
# 查看李白是否被选中
if  isSelected:
    print('李白已被选中,你只能选下一个英雄了')

# 获取第3个单选框露娜元素对象
element = driver.find_element(By.CSS_SELECTOR,"[value='2']")
# 判断是否被选中
if not element.is_selected():
    # 如果未被选中,就可以直接选了
    element.click()**
2、复选框

具体实例代码如下:

代码语言:javascript
复制
# 获取第三个复选框公孙离元素对象
element = driver.find_element(By.NAME, "checkbox3")
isSelected = element.is_selected()
# 如果选中取消选中
if isSelected:
    element.click()

# 全选操作
elements = driver.find_elements(By.CSS_SELECTOR, "[type='checkbox']")
# 遍历选项
for element in elements:
    # 点击选中
    element.click()

四、富文本框操作

1、什么是富文本编辑器?

富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器。

具体长啥样,如下图:

image.png

2、通过键盘事件操作富文本

通过Tab键,先移到富文本框中,自己需要提前数好需要按几下tab,才能介入,多写几个tab,也无妨,因为只有进入富文本,tab相当于缩进了。示例代码如下:

代码语言:javascript
复制
action=ActionChains(driver)
# 鼠标通过tab要先移到富文本框中(自己需要提前数好需要按几下tab,才能介入,多写几个tab,也无妨,因为只有进入富文本,tab相当于缩进了)
for i in range(1,18):
    action.send_keys(Keys.TAB).perform()
    time.sleep(1)

action.send_keys("欢迎关注公众号:软件测试君").perform()
3、通过进入iframe实现操作富文本

示例代码如下:

代码语言:javascript
复制
driver.implicitly_wait(30)
# 进入富文本编辑器
driver.switch_to.frame("ueditor_0")
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, ".view").click()
time.sleep(2)
# 输入文字
driver.find_element(By.CSS_SELECTOR, "[contenteditable='true']").send_keys("欢迎关注公众号:软件测试君")
time.sleep(2)
# 选中全部
driver.find_element(By.CSS_SELECTOR, ".view").send_keys(Keys.CONTROL + "a")
time.sleep(2)
# 跳出富文本编辑器
driver.switch_to.default_content()
# 加粗操作
driver.find_element(By.CSS_SELECTOR,".edui-for-bold .edui-icon").click()
4、通过执行js实现富文本操作

示例代码如下:

代码语言:javascript
复制
driver.get("https:uutool.cn/ueditor/")
content = "欢迎关注公众号:软件测试君";
#ueditor_0为所在iframe的id
js = "document.getElementById('ueditor_0').contentDocument.write('" + content + "');"
driver.execute_script(js)

五、日历控件操作

思路:移除元素的readonly属性,然后执行输入操作

示例代码如下:

代码语言:javascript
复制
driver.get("https://kyfw.12306.cn/otn/index/init")
# 去掉元素的readonly属性
js = 'document.getElementById("train_date").removeAttribute("readonly");'
driver.execute_script(js)

# 用js方法输入日期
# js_value = 'document.getElementById("train_date").value="2022-11-24"'
# driver.execute_script(js_value)

# # # 清空文本后输入值
driver.find_element(By.ID,"train_date").clear()
driver.find_element(By.ID,"train_date").send_keys("2022-11-24")

写在最后

我也曾无数次问过自己,该不该继续坚持写文章努力更新下去?

也可以说,我曾动摇过,因为做公号迁移后,导致我文章阅读量及转载的严重下滑,这真的让我很难受。

回想当初做公号的初心,一是为了交友,找到一些志同道合的技术朋友一起学习,二是,写出来当做学习笔记,或者可以说是复习笔记。

但更多的可能是期待能得到更多正向反馈,因为能让我们自己一直持续做某一件事情的原因,多半是来自他人的认可,然后并尽量把这件事情做到更好。

有自己的目标,找到自己努力的方向及节奏,只管坚持去做好了,剩下的就交给时间吧!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、cookie常用操作入门
    • 1、获取所有cookie信息
      • 2、删除所有cookie信息
        • 3、添加cookie
          • 4、获取指定名称的cookie信息
            • 5、删除指定名称的cookie信息
            • 二、截图操作
              • 1、获取当前屏幕截图,使用完整路径,文件名以时间命名
                • 2、保存屏幕截图
                  • 3、获取当前屏幕截图base64编码字符串
                    • 4、获取当前屏幕截图的二进制文件数据
                    • 三、单选框及复选框处理
                      • 1、单选框
                        • 2、复选框
                        • 四、富文本框操作
                          • 1、什么是富文本编辑器?
                            • 2、通过键盘事件操作富文本
                              • 3、通过进入iframe实现操作富文本
                                • 4、通过执行js实现富文本操作
                                • 五、日历控件操作
                                • 写在最后
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档