Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
学习目的:
掌握页面常规元素的定位方法
场景:
网页正常的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('20') time.sleep(3) #method_3 s3 = dr.find_element_by_id('nr') Select(s3).select_by_index('0') 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()
难点分析:
初次使用的时候,需要多看内置方法
学习总结:
需要多操作,建立一个常用操作库参考