< a href="https://github.com/%E5%B0%8F%E7%9A%AE%E6%B5%A9"> Fork me on GitHub

selenium定位和键盘事件

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之后,直接回车

 

posted @ 2020-01-09 21:17  赌徒!  阅读(233)  评论(0)    收藏  举报