【Python自动化】selenium简单应用
准备工作
查询浏览器版本 chrome://version/
下载驱动 https://chromedriver.storage.googleapis.com/index.html
下载的驱动版本要和浏览器版本一致
chrome_driver = r'driver\chromedriver.exe' # chromedriver的文件位置
driver = webdriver.Chrome(executable_path=chrome_driver)
获取网页
driver.get(url)
获取元素
- 通过元素名获取元素
driver.find_element_by_name(STR_NAME)
- 通过类名获取元素
driver.find_element_by_class_name(STR_NAME)
- 通过ID获取元素
driver.find_element_by_id(STR_NAME)
这几个是最常用的的,还有其他的,就不在此列举了。
元素操作
点击事件
方式1
获取元素后直接执行点击事件.click()
例如
driver.find_element_by_id(STR_NAME).click()
方式2
driver.execute_script("arguments[0].click();", 元素)
例如
a = driver.find_element_by_id(STR_NAME) # 发送验证码按钮
driver.execute_script("arguments[0].click();", a) # 点击按钮
键入文本
.send_keys(欲键入文本)
例如
elem = driver.find_element_by_name(STR_NAME)
elem.send_keys(STR)
一些无用的例子,仅供学习
from selenium import webdriver
import time
from selenium.webdriver.support.wait import WebDriverWait
def sentCode(tel):
# 查询浏览器版本 chrome://version/
# 下载驱动 https://chromedriver.storage.googleapis.com/index.html
# 下载的驱动版本要和浏览器版本一致
chrome_driver = r'driver\chromedriver.exe' # chromedriver的文件位置
driver = webdriver.Chrome(executable_path=chrome_driver)
# 阿里支付宝注册 | 找不到元素
# driver.get('https://memberprod.alipay.com/account/reg/index.htm')
# a = driver.find_element_by_class_name('J-agree-button')
# a.click()
# 高途课堂 | 滑块验证
# driver.get('https://www.gaotu.cn/')
# a = driver.find_element_by_class_name('login') # 找到登陆按钮
# driver.execute_script("arguments[0].click();",a) # 点击登录
# elem = driver.find_element_by_name("sms") # 获取手机号输入框
# elem.send_keys(tel) # 填写手机号
# a = driver.find_element_by_class_name('passport-code-btn') # 找到登陆按钮
# driver.execute_script("arguments[0].click();", a) # 点击登录
# 美团 成功
# driver.get(
# 'https://passport.meituan.com/account/unitivelogin?service=www&continue=https%3A%2F%2Fwww.meituan.com%2Faccount%2Fsettoken%3Fcontinue%3Dhttps%253A%252F%252Fcq.meituan.com%252F&_nsmobilelogin=true')
# elem = driver.find_element_by_name("mobile") # 获取手机号输入框
# elem.send_keys(tel) # 填写手机号
# time.sleep(1)
# a = driver.find_element_by_id('J-verify-btn') # 发送验证码按钮
# driver.execute_script("arguments[0].click();", a) # 点击按钮
# print('美团 - 发送')
# # 58同城 | 填写电话的输入框无法交互
# driver.get('https://passport.58.com/login/?path=https%3A%2F%2Fcq.58.com%2F%3Futm_source%3Dmarket%26spm%3Du-2d2yxv86y3v43nkddh1.BDPCPZ_BT&source=58-homepage-pc&PGTID=0d100000-0002-5491-9403-de17aabb4e1c&ClickID=2')
# a=driver.find_element_by_class_name('phonenum_item') # 找到登陆按钮
# driver.execute_script("arguments[0].click();", a) # 点击按钮
# elem = driver.find_element_by_id("mask_body_item_phonenum")
# driver.find_element_by_id("mask_body_item_phonenum").click()
# elem .send_keys(tel)
# a = driver.find_element_by_id('mask_body_item_getcode') # 发送验证码按钮
# driver.execute_script("arguments[0].click();", a) # 点击按钮
# print('58同城 - 发送')
if __name__ == '__main__':
sentCode('电话号码')