selenium的使用以及用代码去操作谷歌浏览器

selenium

"""
########
# 3 selenium的使用
#######

"""
#1  selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题
 -可以操作浏览器(火狐,谷歌(建议你用谷歌),ie),模拟人的行为(人可以干啥,代码控制就可以干啥)
 # pip3 install selenium
"""
# 1、selenium的简单使用
# from selenium import webdriver
# import time
# # 得到 一个谷歌浏览器对象
# # 代码不能直接操作浏览器,需要有一个浏览器驱动(配套的)
# # 下载谷歌浏览器驱动:http://npm.taobao.org/mirrors/chromedriver/
# # 谷歌浏览器驱动要跟谷歌版本对应
# # http://chromedriver.storage.googleapis.com/79.0.3945.36/   79.0.3945.130(正式版本)
# # 指定一下驱动的位置(相对路径/绝对路径)
# bro=webdriver.Chrome(executable_path='./chromedriver.exe')
# bro.get("https://www.baidu.com")
#
# # 页面内容
# #  相当于它ret.text,可以使用bs4解析数据,或者用selenium自带的解析器解析
# print(bro.page_source)
# time.sleep(10)
# bro.close()


# 2、常用用法(在输入框中输入美女,搜索)

# from selenium import webdriver
# import time
# bro=webdriver.Chrome(executable_path='./chromedriver.exe')
# bro.get("https://www.baidu.com")

# 在输入框中输入美女(自带的解释器,查找输入框控件)
# 1、find_element_by_id  # id找
# 2、find_element_by_link_text   # a标签上的文字找
# 3、find_element_by_partial_link_text # a标签上的文字模糊
# 4、find_element_by_tag_name        # 根据标签名字找
# 5、find_element_by_class_name      # 根据类名字找
# 6、find_element_by_name            # name='xx' 根据name属性找
# 7、find_element_by_css_selector    # css选择器找
# # 8、find_element_by_xpath           #xpath选择器找



# # input_search = bro.find_element_by_xpath('//*[@id="kw"]')
# input_search = bro.find_element_by_css_selector('#kw')
#
# # 写入文字
# input_search.send_keys('美女')
#
# # 查找搜索按钮
# enter = bro.find_element_by_id('su')
#
# # 点击按钮
# enter.click()
#
# time.sleep(3)
#
# bro.close()


# 3、小案列

# from selenium import webdriver
# import time
# bro=webdriver.Chrome(executable_path='./chromedriver.exe')
# bro.get("https://www.baidu.com")
#
# # 隐士等待(比如我们让他最多等待10s)
# # 只有控件没有加载出来,才会等,控件一旦加载出来,就直接取到
# bro.implicitly_wait(10)
#
# # 点击百度的登录
# submit_button = bro.find_element_by_link_text('登录')
# submit_button.click()
#
# # 用户名登录
# user_button = bro.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn')
# user_button.click()
#
# # 输入用户名框
# user_input = bro.find_element_by_id('TANGRAM__PSP_10__userName')
# user_input.send_keys('15084785194')
#
# # 输入密码框
# pwd_input = bro.find_element_by_id('TANGRAM__PSP_10__password')
# pwd_input.send_keys('zhanyafeng666')
#
# # 登录
# submit_input = bro.find_element_by_id('TANGRAM__PSP_10__submit')
# submit_input.click()
#
#
# time.sleep(3)
# bro.close()



# 4 获取cookie
# 登陆之后,拿到cookie:就可以自己搭建cookie池(requests模块发请求,携带者cookie)
# import time
# from selenium import webdriver
# bro=webdriver.Chrome(executable_path='./chromedriver')
# bro.get("https://www.baidu.com")
# print(bro.get_cookies())
# bro.close()
#
# #搭建cookie池和代理池的作用是什么?封ip ,封账号(弄一堆小号,一堆cookie)



# 5 无界面浏览器(驱动谷歌,驱动其他浏览器)
# from selenium import webdriver
# from selenium.webdriver.chrome.options import Options
# chrome_options = Options()
# chrome_options.add_argument('window-size=1920x3000') #指定浏览器分辨率
# chrome_options.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
# chrome_options.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
# chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
# chrome_options.add_argument('--headless') #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
#
# bro=webdriver.Chrome(executable_path='./chromedriver',options=chrome_options)
# bro.get("https://www.baidu.com")
# print(bro.get_cookies())
# bro.close()


# 6 获取标签属性
# (重点:获取属性)
# print(tag.get_attribute('src'))
# print(tag.get_attribute('href'))
# # (重点:获取文本)
# print(tag.text)
#
# #获取标签ID,位置,名称,大小(了解)
# print(tag.id)
# print(tag.location)
# print(tag.tag_name)
# print(tag.size)


# 7 显示等待和隐士等待
# 隐士等待(最多等待10s)
# 只有控件没有加载出来,才会等,控件一旦加载出来,直接就取到
# bro.implicitly_wait(10)
# 显示等待(每个控件,都要写等待),不要使用

# 8 元素交互操作 点击click,清空clear,输入文字send_keys


#9 执行js
# from selenium import webdriver
# import time
# bro=webdriver.Chrome(executable_path='./chromedriver')
#
# bro.get("https://www.cnblogs.com")
# # 执行js代码
# # bro.execute_script('alert(1)')
# # window.scrollTo(0,document.body.scrollHeight)
#
# # 屏幕滑动到底部
# bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# time.sleep(5)
# bro.close()



# 10 模拟浏览器前进后推
# import time
# from selenium import webdriver
# bro=webdriver.Chrome(executable_path='./chromedriver')
#
# bro.get("https://www.cnblogs.com")
# time.sleep(1)
# bro.get("https://www.baidu.com")
# time.sleep(1)
# bro.get("https://www.jd.com")
#
# #退到上一个
# bro.back()
# time.sleep(1)
# # 前进一下
# bro.forward()
#
# time.sleep(5)
# bro.close()


# 10 选项卡管理
# import time
# from selenium import webdriver
#
# browser=webdriver.Chrome(executable_path='./chromedriver')
# browser.get('https://www.baidu.com')
# # 打开一个新窗口
# browser.execute_script('window.open()')
#
# print(browser.window_handles) #获取所有的选项卡
# browser.switch_to_window(browser.window_handles[1])
# browser.get('https://www.taobao.com')
# time.sleep(2)
# browser.switch_to_window(browser.window_handles[0])
# browser.get('https://www.sina.com.cn')
# browser.close()

# 11 异常处理
from selenium import webdriver
from selenium.common.exceptions import TimeoutException,NoSuchElementException,NoSuchFrameException

try:
    browser=webdriver.Chrome(executable_path='./chromedriver')
    browser.get('http://www.baidu.com')
    browser.find_element_by_id("xxx")

except Exception as e:
    print(e)
finally:
    browser.close()
"""
posted @ 2020-04-09 20:39  alen_zhan  阅读(855)  评论(0编辑  收藏  举报
返回顶部