学习目的:


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

场景:


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

正式步骤:


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


处理HTML代码截图

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

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


处理HTML代码截图

解决方案:

# -*-  coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time url = 'https://www.baidu.com'
dr = webdriver.Chrome()
dr.get(url)
dr.find_element_by_link_text('设置').click()
dr.find_element_by_class_name("setpref").click()
time.sleep(1)
#method_1
s1 = dr.find_element_by_id('nr')
Select(s1).select_by_visible_text('每页显示50条')
time.sleep(3) #method_2
s2 = dr.find_element_by_id('nr')
Select(s2).select_by_value('')
time.sleep(3) #method_3
s3 = dr.find_element_by_id('nr')
Select(s3).select_by_index('')
time.sleep(1) dr.quit()

step3: 处理alert弹出框


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

解决方案:

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

难点分析:


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

学习总结:


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

最新文章

  1. MVVM模式解析和在WPF中的实现(三)命令绑定
  2. 求1...n中因子最多的数
  3. 最简单的基于JSP标准标签库的增删改查
  4. 一款开源且功能强大的C#甘特图控件.NET Winforms Gantt Chart Control
  5. HTTP 错误 500.24 - Internal Server Error的解决方法
  6. Tomcat 长连接与短连接性能测试
  7. JS对json对象的调用成员2种方式
  8. C语言函数返回数组
  9. c#操作XML文件的通用方法
  10. Android studio错误及解决办法
  11. 电容式触摸控制器PCB布局
  12. 经常使用MD5算法代码
  13. HDU1237 简单的计算器 【堆】+【逆波兰式】
  14. php获取文件名
  15. java较全的面试题
  16. 延迟实例化 Lazy<T>
  17. hdu 2044 递推
  18. 6.3 Query 语句对系统性能的影响
  19. [GXOI/GZOI2019]宝牌一大堆
  20. 二十二:制作app的时候超出部分不能滑动

热门文章

  1. Path variable [contentHash:8] not implemented in this context: styles.[contentHash:8].css
  2. grep匹配命令
  3. TypeError: Cannot read property '$$' of undefined at HTMLElement._attached.wx.getPlatform._touchstartHandlerForDevtools
  4. BZOJ1101——莫比乌斯函数&&入门
  5. BZOJ 2458: [BeiJing2011]最小三角形 (分治)
  6. Spring bean 实现InitializingBean和DisposableBean接口实现初始化和销毁前操作
  7. 并发编程入门(一): POSIX 使用互斥量和条件变量实现生产者/消费者问题
  8. Go中&和*的区别
  9. addEventListener 事件监听器 冒泡事件)
  10. Hdu 5248