安装Selenium参考
注意事项
Chromedriver版本要和Chrome版本对应
https://npm.taobao.org/mirrors/chromedriver/ # Driver下载
Chromedriver放在Python解释器目录下
获取不到元素时查看 查看标签是否在iframe表单中
调试代码时可以使用指定端口号进行分步调试
如果不会编写Xpath语句可以在浏览器 F12---选中元素---右键--copy---xpath
可在浏览器调试窗口中Ctrl+f 粘贴Xpath语法查看选中的元素
指定端口启动浏览器 CMD中输入
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
Xpath语法
根据标签属性定位
//标签名[@属性名='属性值']/下一级标签名
* = 通配符 @href = 获取a标签内的href属性值 [1] = 第1个form标签
demo:
//div[@class="outerContainer"]/form[1]
//*[@id="award"]/a/@href
根据标签内容定位
//标签名[contains(text(), '标签内容')]/下一级标签名
contains = 包含 text() = 精确匹配
demo
//span[contains(text(), '其它')]/a
//span[(text()='4')]
实例化对象
# 下载selenium依赖包
pip install selenium
# 导包
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import Chrome
# 实例化Options()对象
chrome_options = Options()
# 添加属性
chrome_options.add_argument('--headless') # 使用无头浏览器 :没有界面
chrome_options.add_argument('--no-sandbox') # 使用开发者模式
chrome_options.add_argument('--incognito') # 使用无痕浏览
driver = Chrome(options=chrome_options)
selenium设置属性
无界面化.
.add_argument('--headless')
关闭GPU加速
.add_argument('--disable-gpu')
开发者模式
.add_argument('--no-sandbox')
设置窗口大小, 窗口大小会有影响.
.add_argument('--window-size=1366,768')
访问指定端口的浏览器
.add_experimental_option('debuggerAddress', '127.0.0.1:9222')
无痕浏览
.add_argument('--incognito')
在cmd中输入,指定端口打开浏览器
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
标签定位
使用 xpath语法进行定位
driver.find_element_by_xpath("//input[@placeholder='请输入研发活动名称']")
driver.find_element(By.XPATH,"//span[contains(text(), '添加')]")
使用js语法进行定位
driver.execute_script(js)
使用css进行定位
driver.find_element(By.CSS_SELECTOR, 'css')
使用标签id名称进行定位
driver.find_element_by_id(id_name) # 获取单个元素
driver.find_elements_by_id(id_name) # 获取多个元素
使用class类名进行定位
driver.find_element_by_class_name(class_name) # 获取单个元素
driver.find_elements_by_class_name(class_name) # 获取多个元素
获取多个元素
driver.find_elements()
全局等待
driver.implicitly_wait(3)
最大化
driver.maximize_window()
Driver对象中的方法
rst = driver.find_element(By.XPATH,"//span[contains(text(), '添加')]")
rst.text 获取内容
rst.click() 对元素进行点击
rst.clear() 清空内容
rst.get_attribute(‘href’) 获取标签内的属性值
rst.send_keys('276016') 输入内容
切换标签页
driver.switch_to.window(driver.window_handles[0]) # 0:第几个
handle = driver.current_window_handle # 查看当前标签页 Handle
driver.switch_to.window(handle) # 切换到当前标签页
Demo:
# 获取当前窗口句柄(窗口A)
handle = driver.current_window_handle
# 打开一个新的窗口
driver.find_element_by_id('xx').click()
# 获取当前所有窗口句柄(窗口A、B)
handles = driver.window_handles
# 对窗口进行遍历
for newhandle in handles:
# 筛选新打开的窗口B
if newhandle!=handle:
# 切换到新打开的窗口B
driver.switch_to.window(newhandle)
# 在新打开的窗口B中操作
driver.find_element_by_id('xx').click()
# 关闭当前窗口B
driver.close()
# 切换回窗口A
self.driver.switch_to.window(handles[0])
切换表单
根据名称切换frame表单
driver.switch_to.frame("main")
根据名称切换iframe表单
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
切换到最外层表单
driver.switch_to.default_content()
切换到上级表单
driver.switch_to.parent_frame()
使用键盘
driver.find_element_by_id("sb_form_go").send_keys(Keys.ENTER)
回车键 Keys.ENTER
删除键 Keys.BACK_SPACE
空格键 Keys.SPACE
制表键 Keys.TAB
回退键 Keys.ESCAPE
刷新键 Keys.F5
上键 Keys.UP
下键 Keys.DOWN
send_keys(Keys.CONTROL,'a') #全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') #复制(Ctrl+C)
send_keys(Keys.CONTROL,'x') #剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') #粘贴(Ctrl+V)
Demo
import time
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import Chrome
# 实例化Options()对象
chrome_options = Options()
# 添加属性
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--incognito')
driver = Chrome(options=chrome_options)
# 打开百度
driver.get('http://www.baidu.com')
# 清空并输入文字
driver.find_element_by_xpath('//input[@id="kw"]').clear()
driver.find_element_by_xpath('//input[@id="kw"]').send_keys('Python 天下第一')
# 点击"百度一下"
driver.find_element_by_xpath('//input[@id="su"]').click()
# 最大化浏览器
driver.maximize_window()
time.sleep(10)
# 退出
driver.quit()
--------------------------------------------------如有不足之处敬请谅解,评论区留言加以改正。--------------------------------------