selenium定位和键盘事件
selenium
基础操作
from selenium import webdriver # 浏览器驱动
获取浏览器驱动对象
driver = webdriver.Chrome()
driver = webdriver.Firefox()
driver = webdriver.Chrome(executable_path=r'驱动执行文件的绝对路径')
driver.get('url')
driver.find_element_by_id('xx') # 根据id定位标签
driver.find_element_by_xpath('xxx') # 根据xpath定位
driver.close() # 关闭当前的浏览器窗口
driver.quit() # 退出浏览器
driver.execute_script('alert("xxo00")') # 执行js代码最大/最小/指定大小
driver.maximize_window()
driver.minimize_window()
driver.set_window_size(600,400)截屏
driver.save_screenshot('a.png') # 直接截屏,并保存到 a.png中, 注意,图片的类型是png的
png = driver.get_screenshot_as_png() # 获取解聘的字节流,需要自己保存到png文件中
f = open('b.png', 'wb')
f.write(png)向input框输入文本
driver.find_element_by_xpath('xxxx').send_keys('xx')
driver.find_element_by_xpath('xxxx').clear() # 清空文本框的值
driver.find_element_by_xpath('xxxx').click() # 点击标签刷新
driver.refresh()
前进/后退
driver.forward()
driver.back()获取页面的title
title = driver.title
获取当前页面的文本内容
current_page = driver.page_source
获取当前页面的url
url = driver.current_url
获取当前/所有窗口对象
res = driver.current_window_handle
results = driver.window_handles
自动向163邮箱发送邮件
from selenium import webdriver import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()用浏览器发送请求
driver.get("https://mail.163.com/")
time.sleep(4)try:
# 点击密码登录标签
driver.find_element_by_id("switchAccountLogin").click()
time.sleep(1)
iframe = driver.find_element_by_tag_name('iframe')
driver.switch_to.frame(iframe)# time.sleep(1) driver.find_element_by_class_name('dlemail').send_keys("guo15009428458") driver.find_element_by_class_name('dlpwd').send_keys("guo19960529") driver.find_element_by_class_name('tabfocus').click() time.sleep(1) # driver.find_element_by_id('_mail_tabitem_0_3').click() time.sleep(3) driver.find_element_by_id('_mail_component_24_24').click() #收件人 #方法一 time.sleep(3) obj = driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys("guo15009428458@163.com") time.sleep(1) title = driver.find_elements_by_class_name('nui-ipt-input')[2] title.send_keys("郭建凯的selenium第一份邮件") # driver.find_elements_by_class_name('nui-ipt-input').send_keys("郭建凯的selenium第一份邮件") #方法二,利用类值,找到标签 time.sleep(1) iframe = driver.find_element_by_class_name('APP-editor-iframe') driver.switch_to.frame(iframe) driver.find_element_by_class_name('nui-scroll').send_keys("nihaoa") driver.switch_to.default_content() #方法二,利用键盘操作 # title.send_keys(Keys.TAB, "nihaoa") time.sleep(1) driver.find_element_by_class_name('nui-mainBtn-hasIcon').click()
finally:
time.sleep(2)
driver.quit()
id定位
from selenium import webdriver
driver = webdriver.get(url接口)
driver.find_element_by_id('su') #里面填写标签id值
driver.find_elements_by_id('') #找到多个标签,是一个列表,依靠索引取值可以浏览器中索引到所需要的标签值,在谷歌浏览器是Ctrl+F,进行索引
class类值定位
from selenium import webdriver
driver = webdriver.get(url接口)
driver.find_element_by_class_name(class类值) #里面填写标签类值
driver.find_elements_by_class_name(class类值) #找到多个标签,是列表
css样式定位
from selenium import webdriver
driver = webdriver.get(url接口)
driver.find_element_by_css_selector('') #在浏览器中css找到标签,右键点击copy 选择selects
driver.find_elements_by_css_elector('') #索引到是列表
标签定位
from selenium import webdriver
driver = webdriver.get(url接口)
driver.find_element_by_tag_selector('a') #在浏览器中找到a标签
driver.find_elements_by_tag_selector('')
Xpath定位
#在浏览器中找到标签,右键点击copy xpath from selenium import webdriver
driver.find_element_by_xpath('') #xpath内容
driver.find_elements_by_xpath('')
a标签的link属性
# driver.find_element_by_link_text('xxx') #只适用于超链接
# driver.find_elements_by_link_text('xxx') #精确定位
# driver.find_element_by_partial_link_text('xx') #模糊定位
# driver.find_elements_by_partial_link_text('xxx')
根据name定位
# driver.find_element_by_name('xx')
# driver.find_elements_by_name('xx')
键盘事件
import time from selenium import webdriver from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://pythonav.com/login/')
用户名输入值
user = driver.find_element_by_id('id_username')
user.send_keys('alexdsb')
time.sleep(1)user.send_keys(Keys.CONTROL, 'a')
time.sleep(1)
user.send_keys(Keys.DELETE)
user.send_keys(Keys.BACKSPACE)
time.sleep(2)
user.send_keys(Keys.CONTROL, 'a')
time.sleep(1)
user.send_keys(Keys.CONTROL, 'c')
time.sleep(3)
pwd = driver.find_element_by_id('id_password')
pwd.send_keys(Keys.CONTROL, 'v')
time.sleep(3)
pwd.send_keys(Keys.TAB, 'ABC') # TAB之后,输入值
pwd.send_keys(Keys.TAB, Keys.ENTER) # tab之后,直接回车