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()