pip install -u selenium
谷歌浏览器chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html
火狐浏览器geckodriver下载地址:https://ftp.mozilla.org/pub/firefox/releases/
IE浏览器IEDriverServer下载地址:http://selenium-release.storage.googleapis.com/index.html
from selenium import webdriver # 导入webdriver模块 driverDir='C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe' #chromedriver路径 chrome_options = webdriver.ChromeOptions() #参数设置 #chrome_options.add_argument('--headless') driver = webdriver.Chrome(driverDir ,options=chrome_options) #打开Google浏览器 ''' #火狐浏览器 fireFoxOptions = webdriver.FirefoxOptions() driver= webdriver.Firefox(firefox_options=fireFoxOptions) #IE浏览器 driver = webdriver.Ie() ''' driver.get("https://www.baidu.com") # 打开网页 driver.get(r"C:\text.html") # 打开本地 html页面 print(driver.title) # 打印网页的标题 print(driver.current_url) # 输出当前的链接 driver.close() #关闭浏览器窗口 driver.quit() #退出浏览器
label = driver.find_element_by_id("kw") label = driver.find_element_by_name("wd") label = driver.find_element_by_class_name("s_ipt") label = driver.find_element_by_tag_name("imput") label = driver.find_element_by_link_text("a标签中的内容 准确定位") label = driver.find_element_by_partial_link_text("a标签中的内容 模糊定位 ") label = driver.find_element_by_xpath(“放入标签中的css路径,可以在浏览器复制”) label = driver.find_element_by_css_selector(“input[id='id_name'/name='name_name'/……/]")
xpath 标签定位复杂元素:
# 绝对路径 label = driver.find_element_by_xpath("html/boday/p/input") # 绝对路径 导航 label = driver.find_element_by_xpath("html/boday/p/input[1]") # 绝对路径导航,多个input框,确定第一个input框 #相对路径 label = driver.find_element_by_xpath("//input") # 相对路径导航 表示 整个文档当中的 input标签 默认为第一个 * 第一个“//” 表示 在整个文档中 label = driver.find_element_by_xpath("//input[2]") # 指定页面中的第二个 input框 没有就报错 # 父节点下找子节点 label = driver.find_element_by_xpath("//form//input") # // 父节点//子节点 * 返回子节点 input label = driver.find_element_by_xpath("//form//input[2]") # // 父节点//子节点 [2] * 指定 父节点下的 第二个 input子节点 # 通过子节点 定位父节点 label = driver.find_element_by_xpath("//form//input/..") # 返回input的父节点 form 标签 label = driver.find_element_by_xpath("//form//input/.") # 当前节点 # 通过属性查找节点 label = driver.find_element_by_xpath("//input[@id]") # 相对路径导航 找到所有的 input标签 其中有 id属性的标签 label = driver.find_element_by_xpath("//input[@id='1']") # 属性查找 在所有的input标签中 找到 具有 id=1 的input标签 label = driver.find_element_by_xpath("//input[@name='xiahua']") # 标签统计 countains label = driver.find_element_by_xpath("//*[countains(input)=1]") # //* 表示 整个文档中 的所有标签,[count(input)=1] 表示 父标签下只有 一个input子标签 的 input标签 label = driver.find_element_by_xpath("//*[countains(input)=2]") # //* 表示 整个文档中 的所有标签,[count(input)=1] 表示 父标签下有 两个input子标签 的 input标签 # local-name 模糊查找 label = driver.find_element_by _xpath("//*[local-name()='input']") # 查找当前文档中 的所有input标签 默认返回第一个 label = driver.find_element_by _xpath("//*input") # 查找当前文档中 的所有input标签 默认返回第一个 label = driver.find_element_by _xpath("//*[local-name(),'i']") # 查找当前文档中 标签名字中 包含字母 i的标签,比如 input title label = driver.find_element_by _xpath("//*[local-name(),'i']") # 查找当前文档中 的所有input标签 默认返回第一个 label = driver.find_element_by _xpath("//*[countains(local-name(),'i')] [last()]) # 查找当前文档中 所有包含 字母“i”的 标签 的子标签 的 最后一个元素 label = driver.find_element_by _xpath("//*[strint-length(local-name()=3)] [last()]) # 查找当前文档中 所有 标签字符个数为5的标签,并且制定返回 最后一个标签。 title input(5个str)
label.get_attribute("type") # 显示标签的type属性 name type id placeholder label.tag_name() #获取标签名字 input p form …… driver.maximize_window()# 窗口最大化 label.click() # 模拟a标签 点击事件 label.send_keys("模拟搜索内容") # 模拟input框 输入内容label.clear() # 清除input标签中 输入的内容chrome_obj.back() # 模拟浏览器 返回上一个浏览页面
from selenium.webdriver.common.action_chains import ActionChains #导入模块 label = driver.find_element_by_link_text("点我 悬浮 显示其他 a标签") ActionChains(driver).move_to_element(label).perform() # 模拟用户悬浮 """ ActionChains(driver) 用于生成模拟用户行为 ;perform() 执行存储行为 """ label_bel = driver.find_element_by_link_text("我是 a标签,点我页面跳转") label_bel.click() # 模拟用户点击 ''' 其他鼠标操作 label.countext_lick() # 右击 label.double_click() # 双击 label.drag_and_drop() # 拖动 label.move_to_element # 悬浮 label.click_and_hold # 按鼠标左键一直不动 '''
from selenium.webdriver.common.keys import Keys # 引入模块 label.send_keys("input输入的内容") label.send_keys(Keys.BACK_SPANCE) # 退格键 label.send_keys(Keys.CONTRL,'a') # 全选 label.send_keys(Keys.CONTRL,'v') # 粘贴 label.send_keys(Keys.CONTRL,'c') # 复制 label.send_keys(Keys.CONTRL,'x‘’) # 剪切 label.send_keys(Keys.ENTER) # 回车
from selenium import webdriver import time def auto_login(name,pwd,url): driver = webdriver.driver() driver.get(url) time.sleep(1) driver.maximize_window() time.sleep(2) name_label = driver.find_element_by_id("account") #登录用户名输入框 name_label.clear() name_label.send_keys(name) pwd_label = driver.find_element_by_id("password") #登录密码输入框 pwd_label.clear() pwd_label.send_keys(pwd) time.sleep(3) login_label = driver.find_element_by_id("login_btn") #登录按钮 login_label.click() time.sleep(5) #driver.close() #关闭浏览器 if __name__ == "__main__": name = "" pwd = "" url = "" auto_login(name,pwd,url)
frome selenium import webdrive driver = webdrive.driver() driver.get("https://www.baidu.com") driver.find_element_by_id("kw").send_keys("菊花") driver.find_element_by_id("su").click() # 打开百度搜索的第一个窗口 driver.find_element_by_partial_link_text("百度百科").click() # 打开第二个窗口 driver.window_handles # 查看当前 打开窗口 driver.switch_to_window(driver.window_handles[1]) # 使用索引切换到第二个窗 driver.current_url() # 查看当前url
label.text在属性可见时是可以获取的,但当属性不可见时,需要使用label.get_attribute(‘innerText’)
input.get_attribute('value') #获取输入框的值 aElement.get_attribute('href') #获取a标签的链接