Selenium最早是为了测试浏览器、网页的,但目前也被广泛应用于网络爬虫。本文整理Selenium最常见的使用方法。
一、创建webdriver,打开特定页面
#打开浏览器、百度网站 driver = webdriver.Chrome() driver.get("https://baidu.com")二、设置浏览器大小、设置页面大小
driver = webdriver.Chrome() driver.get("https://baidu.com")三、页面前进/后退、刷新、保存截屏
#后退 driver.back() #前进 driver.forward() #刷新 driver.refresh() #保存当前页面截屏 driver.save_screenshot("save_1.png")四、关闭页面、退出浏览器
driver.close() driver.quit()五、等待
#强制等待 2 秒 time.sleep(2) #隐性等待,最长等 30 秒 dr.implicitly_wait(30) #显式等待,每隔 0.5 秒进行一次检查,最长等 20 秒 WebDriverWait(dr, 20, 0.5).until(EC.presence_of_element_located((By.LINK_TEXT,u'首 页')))六、打开多个页面
# 打开浏览器 driver=webdriver.Chrome() driver.get("http://baidu.com") # 停留两秒后打开搜狗搜索 driver=webdriver.Chrome() driver.get("http://baidu.com") #停留两秒后打开有道翻译 time.sleep(2) time.sleep(2) JS2='window.open("https://fanyi.youdao.com/");' driver.execute_script(JS2)七、使用JS下滑到页面底部
driver=webdriver.Chrome() driver.get("https://top.baidu.com//") JS="window.scrollTo(10000,document.body.scrollHeight)" driver.execute_script(JS)八、Cookie处理
#获取所有cookie cookies=driver.get_cookies() #获取key为BAIDUID的cookie cookie=driver.get_cookie("BAIDUID") #删除所有的cookie driver.delete_all_cookies()九、元素定位
#根据ID定位 driver.find_element_by_id("kw") #根据NAME定位 driver.find_element_by_name("wd") #根据Xpath定位 driver.find_element_by_xpath(r'//*[@id="kw"]') #根据CSS选择器定位 driver.find_element_by_css_selector("#kw") #根据Link Text定位 driver.find_element_by_link_text("新闻")关于xpath、CSS的使用,可参见文章:
解析html:Xpath快速了解使用、解析html:CSS Selector快速了解使用
十、文本框输入,按钮点击
driver.get("http://cn.bing.com/") keywords = 'SELENIUM爬虫' # id="sb_form_q"是 bing 搜索输入框,输入字符串"SELENIUM 自动化测试" driver.find_element_by_id("sb_form_q").send_keys(keywords) #点击搜索按钮 driver.find_element_by_id("sb_form_go").click()十一、不同frame之间转换
#找到特定的frame并切换 Frame_name= driver.find_element_by_id(【Frame_name】) driver.switch_to_frame(Frame_name) #回到默认的frame driver.switch_to_default_content()十二、使用JS修改页面标题、进行弹窗
#启动浏览器,打开页面 driver=webdriver.Chrome() driver.get("https://www.baidu.com/") #修改页面标题 time.sleep(5) JS1="document.title='xxxxxx';" driver.execute_script(JS1) #弹窗 time.sleep(5) JS2=r"alert($(document).attr('title'));" driver.execute_script(JS2) #退出 time.sleep(5) driver.quit()