一.对话框:
例:点击百度的登录,弹出的小窗口
#coding=utf-8 from selenium import webdriver from time import sleep dr=webdriver.Chrome() dr.get("http://www.baidu.com") #一定要记得设置等待时间,要不然定位不到!!! dr.find_element_by_link_text("登录").click() sleep(3) #思路:二次定位,点击登录后,定位登录的弹出框,用id或class_name都可以!!然后定位登录框的姓名输入框 #login=dr.find_element_by_id("TANGRAM__PSP_8__userName") 直接定位,定位不到!!!!! #login=dr.find_element_by_class_name("tang-content").find_element_by_name("userName") login=dr.find_element_by_id("TANGRAM__PSP_8__form").find_element_by_id("TANGRAM__PSP_8__userName") login.send_keys("17710192039") dr.find_element_by_name("password").send_keys("a7s5dfg!") dr.find_element_by_id("TANGRAM__PSP_8__submit").submit()
二.多窗口,从一个页面跳转到另外一个页面
思路:先定位百度登录的句柄,然后跳转到注册页面,点击转到非登录页面的句柄!!!!!
#coding=utf-8 from selenium import webdriver from time import sleep dr=webdriver.Chrome() dr.get("http://passport.baidu.com") #一定要记得设置等待时间,要不然定位不到!!! nowhandle=dr.current_window_handle allhandles0=dr.window_handles #当前登录页面只有一个句柄 print "现在是登录页面" print nowhandle for h in allhandles0: print h #跳转到注册页面一共有两个句柄(包含登录页面的) print "现在进入注册页面" dr.find_element_by_link_text("立即注册").click() sleep(3) allhandles=dr.window_handles for handle in allhandles: print handle for handle in allhandles: if handle!=nowhandle: dr.switch_to_window(handle) sleep(3) #关闭当前窗口 dr.close() #转到登录首页 dr.switch_to_window(nowhandle)
三.弹出框处理 alert:使用switch_to_alert() (accept,dismiss,send_keys)
#coding=utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from time import sleep dr=webdriver.Chrome() dr.get("http://www.baidu.com") #此处为百度页面的设置,涉及下拉框的处理!!!处理思路:一般是两次点击,一次点击弹出下拉框,另一次点击选项,如果是鼠标移动上弹出的用 move_to_element() #先定位到“设置” dr.find_element_by_link_text("设置").click() sleep(3) sou=dr.find_element_by_class_name("pf") sou.click() #ActionChains(dr).move_to_element(sou).perform() 这种的一般用于找父元素,下拉框.子元素,移动到子元素上 sleep(3) #点击“确定”,用accept() dr.switch_to_alert().accept() #点击取消",用dismiss() dr.switch_to_alert().dismiss() #输入内容,直接用send_keys() dr.switch_to_alert().send_keys() #输出内容 print dr.switch_to_alert().text
四.上传文件,直接定位点击按钮,并send_keys即可(路径必须正确)
upload.html
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>upload_file</title> <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" /> </head> <body> <div class="row-fluid"> <div class="span6 well"> <h3>upload_file</h3> <input type="file" name="file" /> </div> </div> </body> <script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script> </html>
uoload.py
#coding=utf-8 from selenium import webdriver from time import sleep import os dr=webdriver.Chrome() #打开上传文件的页面 file_path=‘file:///‘+os.path.abspath(‘upload.html‘) dr.get(file_path) sleep(3) #点击”选择文件“按钮, dr.find_element_by_name("file").send_keys(‘D:\\zhihu.cookie.txt‘) sleep(3)
效果如下:
时间: 2024-08-04 12:05:44