学习目的:


  掌握页面常规元素的定位方法

场景:


  网页正常的select元素下拉框常规方法和select专属方法

正式步骤:


step1:常规思路select页面元素定位


处理HTML代码截图

  1. # -*- coding:utf-8 -*-
  2. from selenium import webdriver
  3. import time
  4. from selenium.webdriver.common.action_chains import ActionChains
  5. #常规select方法:百度首页设置搜索结果显示条目数
  6. url = "https://www.baidu.com"
  7. dr = webdriver.Chrome()
  8. dr.get(url)
  9. # dr.find_element_by_link_text('设置').click()
  10. # dr.find_element_by_class_name("setpref").click()
  11. # time.sleep(1)
  12. # dr.find_element_by_xpath('//*[@id="nr"]/option[3]').click()
  13. #常规方法二:鼠标移动悬浮到设置按钮上点击搜索设置
  14. mouse = dr.find_element_by_link_text('设置')
  15. ActionChains(dr).move_to_element(mouse).perform()
  16. dr.find_element_by_class_name("setpref").click()
  17. time.sleep(1)
  18. dr.find_element_by_xpath('//*[@id="nr"]/option[3]').click()
  19.  
  20. time.sleep(3)
  21. dr.close()#close是退出当前窗口,quit是退出整个dr进程

step2:Select专有方法,即selenium内置方法


处理HTML代码截图

解决方案:

  1. # -*- coding:utf-8 -*-
  2. from selenium import webdriver
  3. from selenium.webdriver.common.action_chains import ActionChains
  4. from selenium.webdriver.support.select import Select
  5. import time
  6.  
  7. url = 'https://www.baidu.com'
  8. dr = webdriver.Chrome()
  9. dr.get(url)
  10. dr.find_element_by_link_text('设置').click()
  11. dr.find_element_by_class_name("setpref").click()
  12. time.sleep(1)
  13. #method_1
  14. s1 = dr.find_element_by_id('nr')
  15. Select(s1).select_by_visible_text('每页显示50条')
  16. time.sleep(3)
  17.  
  18. #method_2
  19. s2 = dr.find_element_by_id('nr')
  20. Select(s2).select_by_value('')
  21. time.sleep(3)
  22.  
  23. #method_3
  24. s3 = dr.find_element_by_id('nr')
  25. Select(s3).select_by_index('')
  26. time.sleep(1)
  27.  
  28. dr.quit()

step3: 处理alert弹出框


处理情景截图,需要点击“确定”按钮,但此按钮无相应的html元素

解决方案:

  1. # -*- coding:utf-8 -*-
  2. from selenium import webdriver
  3. from selenium.webdriver.common.action_chains import ActionChains
  4. from selenium.webdriver.support.select import Select
  5. import time
  6. """
  7. 如果弹出有弹出框需要你输入内容,那么就要使用定位元素后的send_keys()来输入内容
  8. 弹出框的确定可以按F12来查看页面元素,如果有对应的HTML元素,则正常定位,但是需要切换句柄才能操作
  9. """
  10. url = 'https://www.baidu.com'
  11. dr = webdriver.Chrome()
  12. dr.get(url)
  13. dr.find_element_by_link_text('设置').click()
  14. dr.find_element_by_class_name("setpref").click()
  15. time.sleep(1) #此步骤必须加等待时间
  16. dr.find_element_by_link_text("保存设置").click()
  17. # time.sleep(1)
  18. test_alert = dr.switch_to.alert() # 切换到alert
  19. def alert_display():
  20. try:
  21. t = test_alert.text
  22. print(t)
  23. return True
  24. except:
  25. return False
  26. if alert_display():
  27. test_alert.accept() #accept表示点击确定
  28. test_alert.dismiss()#dismiss表示不接受弹出框
  29. else:
  30. print("alert未弹出")
  31.  
  32. dr.quit()

难点分析:


  初次使用的时候,需要多看内置方法

学习总结:


  需要多操作,建立一个常用操作库参考

Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert的更多相关文章

  1. Python3 Selenium自动化web测试 ==> 第八节 WebDriver高级应用 -- 结束Windows中浏览器的进程

    学习目的: 掌握WebDriver的高级应用 正式步骤: # -*- coding:utf-8 -*- from selenium import webdriver from selenium.web ...

  2. Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest

    前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...

  3. Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>

    前置步骤: 上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可: ...

  4. Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>

    学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...

  5. Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项

    学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...

  6. Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条

    学习目的: 掌握页面元素定位以外的其他重要知识点. 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver fr ...

  7. Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素

    学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...

  8. Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)

    前置步骤: 安装selenium,chrome驱动,Python3.6 学习目的: 常见API的使用 涉及的API: step1: 访问一个网址 step2: 网页的前进和后退 step3: 刷新当前 ...

  9. Python3 Selenium自动化web测试 ==> 第十一节 WebDriver高级应用 -- 显示等待 + 二次封装

    学习目的: 掌握显示等待 掌握二次封装 正式步骤: step1:显示等待的代码示例 # -*- coding:utf-8 -*- from selenium import webdriver from ...

随机推荐

  1. IIS配置web.config 将带www域名转为不带www域名

    在configuration节点中添加 <configuration> <system.webServer> <rewrite> <rules> < ...

  2. Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)

    题目链接:http://codeforces.com/contest/1041/problem/F 题意:给出一根无限长的管子,在二维坐标上表示为y1 <= y <= y2,其中 y1 上 ...

  3. IDEA 安装与破解(亲测有效)

    本文转载:https://blog.csdn.net/g_blue_wind/article/details/74380483 根据以下的流程,顺利安装了最新版本的idea企业版. IDEA 全称 I ...

  4. python中装饰器(语法糖)概念

    “”“” 什么是装饰器? """ 还是通过一个例子来慢慢说明 先看下面的例子 def func_1(x): return x*2 def fun_2(x): return ...

  5. python下vs的使用

    part 1:导入pygame包 在python环境下:视图---其他窗口--python环境,选择从pypi安装pygame

  6. HDU3501 Calculation 2 [欧拉函数]

    题目传送门 Calculation 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  7. Python基础之基本数据类型的总结

    基本数据类型的总结 1. 按照存储空间的占用分(从低到高) 数字 字符串 集合:无序,即无序存索引相关信息 元组:有序,需要存索引相关信息,不可变 列表:有序,需要存索引相关信息,可变,需要处理数据的 ...

  8. ARTS打卡计划第十周

    Algorithms: https://leetcode-cn.com/problems/next-greater-node-in-linked-list/ 链表中下一个更大的值,双层循环及优化,后面 ...

  9. Java 标准 IO 流编程一览笔录( 下 )

    8.回推流:PushbackInputStream与PushbackReader PushbackInputStream/PushbackReader 用于解析InputStream/Reader内的 ...

  10. csp-s模拟80(b)

    头一次中午考试,上来一看三个题目以为是三个板子,但一看数据范围就不对劲. T1: 考场上的想法是:找出循环节,对于数组一头一尾的不在循环节中的,维护出以某数结尾/开头的上升序列,对于中间的循环部分只取 ...