自动化7-实战技巧

一、ActionChains类:提供了一些特殊的动作的模拟,比如鼠标右击,双击,移动鼠标至某元素,鼠标拖拽等。

 1 # 点击百度更多产品选项示例
 2 from selenium import webdriver
 3 driver=webdriver.Firefox(executable_path=r'D:BrowserDrivergeckodriver.exe')
 4 driver.implicitly_wait(5)
 5 driver.get('http://www.baidu.com')
 6 # ActionChains类,用于提供特殊动作的一些操作,导入这个包
 7 from selenium.webdriver.common.action_chains import ActionChains
 8 ac=ActionChains(driver)
 9 # move_to_element:鼠标移动到 元素上
10 ac.move_to_element(
11     driver.find_element_by_css_selector('[name="tj_briicon"]')
12 ).perform()

二、冻结界面

  有些网站上的元素,是鼠标悬浮显示出的内容,用selenium自动化点击显示的某图标时,需要f12查看该元素的特征。移开鼠标就无法查看。

  对于此,可以在开发者工具栏console中执行:  setTimeout(function(){debugger},5000)

  表示5000毫秒之后,执行debugger命令。执行后进入debug状态,该特性是界面被冻住。

三、弹出对话框

  弹出对话框有三种类型:alert(警告),confirm(确认)、prompt(提示)

  1)alert:显示通知信息,只需要模拟用户点击OK即可;

      这一操作,selenium提供方法进行:

        driver.switch_to.alert.accept()

      若要程序获取弹出对话框中的信息内容,通过:

        driver.switch_to.alert.text

1 from selenium import webdriver
2 wd=webdriver.Firefox(executable_path=r'D:BrowserDrivergeckodriver.exe')
3 wd.implicitly_wait(5)
4 wd.get('http://cdn1.python3.vip/files/selenium/test4.html')
5 wd.find_element_by_id('b1').click()
6 # wd.switch_to.alert.accept() 同上一句同样意思:模拟用户点击OK按钮
7 # 获取弹出对话框中的信息内容 并打印出来
8 print(wd.switch_to.alert.text)

  

  2)confirm:让用户确认是否要进行某个操作;

        confirm由两个选项:OK、Cancel

        selenium提供的方法是:

          * OK:driver.switch_to.alert.accept()

          * Cancel: driver.switch_to.alert.dismiss()

 1 from selenium import webdriver
 2 wd = webdriver.Firefox(executable_path=r'D:BrowserDrivergeckodriver.exe')
 3 wd.implicitly_wait(5)
 4 wd.get('http://cdn1.python3.vip/files/selenium/test4.html')
 5 wd.find_element_by_id('b2').click()
 6 print(wd.switch_to.alert.text)
 7 wd.switch_to.alert.accept()
 8 wd.find_element_by_id('b2').click()
 9 # 点击取消按钮
10 wd.switch_to.alert.dismiss()

  3)prompt : 出现这个需要用户输入一些信息,提交上去。

        当需要输入信息时,可以调用 driver.switch_to.alert.send_keys()

 1 from selenium import webdriver
 2 driver = webdriver.Chrome(r'D:BrowserDriverchromedriver.exe')
 3 driver.implicitly_wait(5)
 4 driver.get('http://cdn1.python3.vip/files/selenium/test4.html')
 5 # --- prompt ---
 6 driver.find_element_by_id('b3').click()
 7 # 获取 alert 对象
 8 alert = driver.switch_to.alert
 9 # 打印 弹出框 提示信息
10 print(alert.text)
11 # 输入信息,并且点击 OK 按钮 提交
12 alert.send_keys('web自动化 - selenium')
13 alert.accept()
14 # 点击 Cancel 按钮 取消
15 driver.find_element_by_id('b3').click()
16 alert = driver.switch_to.alert
17 alert.dismiss()

四、窗口控制

  获取窗口大小:driver.get_window_size()

  改变窗口大小:driver.set_window_size(x,y)

  获取当前窗口标题:driver.title()

  获取当前窗口URL地址:driver.current_url

  截屏: get_screenshot_as_file()

  手机模式:desired_capabilities参数,指定一手机模式打开chrome浏览器

  上传文件:一般这种上传功能是通过type属性的file的HTML input元素实现的;

       selenium需要先定位到该input元素,通过send_keys方法传入要上传的文件路径。

原文地址:https://www.cnblogs.com/Free-Ink/p/12573499.html