selenium+python学习——webdriver总结
1、学习自动化前,需先了解html和python的基础语法
2、安装环境
1)安装python+pycharm安装方法
可参考:微信公众号:软件安装管家(其中含有安装包以及安装方法)
2)安装selenium
可参考博文:https://www.cnblogs.com/yuer02/p/11905605.html
3、基础学习
1)需掌握元素定位方法
a、单元素八大定位方式
b 、xpath结合属性定位
c 、css结合属性定位
css定位方法和xpath定位方法的区别:两者基本能定位所有的元素。xpath定位元素慢,语法很长,还不稳定,而css的定位更快,更简洁。但本人还是比较习惯用xpath
d、下来框定位方式
参考链接:https://www.cnblogs.com/yoyoketang/p/6128636.html
其实,元素定位方式还有find_elements_by_xxx,与8种元素定位方式一样,只需要加上索引;另外还可以通过用By来定位(后续再研究)
2)操作页面
还有其他的,后续补充
3)操作元素
4)框架集
5)判断元素是否符合预期
可参考链接:http://www.mamicode.com/info-detail-1720150.html
6)多窗口、句柄
7)加载chrome配置
参考链接:https://www.cnblogs.com/yuer02/p/12613920.html
8)等待
强制等待:time.sleep(时间)
隐式等待:driver.implicitle_wait(时间)
显式等待:WebDriverWait;用法参考博文:https://www.cnblogs.com/yoyoketang/p/6517477.html
9)alert
alert警告框、confirm确认框、prompt消息对话框
具体详见链接:https://www.cnblogs.com/yuer02/p/12625551.html
相关代码:
from selenium import webdriver import time as t from selenium.webdriver.support.select import Select from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as ec from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.maximize_window() driver.get("http://www.baidu.com") t.sleep(3) driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").send_keys(Keys.ENTER) # 显式等待,待元素定位 WebDriverWait(driver,10).until(ec.presence_of_element_located((By.ID,"kw"))) # 鼠标悬停 mouse = driver.find_element_by_name("tj_settingicon") ActionChains(driver).move_to_element(mouse).perform() driver.find_element_by_link_text('搜索设置').click() # # 隐式等待 # driver.implicitly_wait(10) t.sleep(5) # 定位下拉框 select = driver.find_element_by_name("NR") # # 以索引的方式定位 # Select(select).select_by_index(2) # print("下拉框选择的最新条数是:",select.get_attribute('value')) # 以value定位 # Select(select).select_by_value("10") # print("下拉框选择的最新条数是:",select.get_attribute('value')) # 以文本定位 Select(select).select_by_visible_text("每页显示10条") print("下拉框选择的最新条数是:",select.get_attribute('value')) t.sleep(3) driver.find_element_by_xpath('//*[@id="se-setting-5"]/label[1]').click() t.sleep(4) # 判断是否选中is_selected() s = driver.find_element_by_xpath('//*[@id="se-setting-5"]/label[1]').is_selected() if s == False: driver.find_element_by_xpath('//*[@id="se-setting-5"]/label[1]').click() print(s) else: print(True) driver.find_element_by_css_selector("#gxszButton > a.prefpanelgo").click() # alert弹框 print("alert弹出框的文本信息为:{0}".format(driver.switch_to.alert.text)) # 获取弹出框的文本信息 driver.switch_to.alert.accept() # 多窗口、句柄 driver.get("http://bj.ganji.com/") h = driver.current_window_handle print(h) driver.find_element_by_link_text("全职").click() all_h = driver.window_handles print(all_h) # # 用索引的方式 # driver.switch_to.window(all_h[0]) # 通用用法 for i in all_h: if i != h: driver.switch_to.window(i) print(driver.title) # 关闭新窗口 driver.close() driver.quit()