python学习之selenium

1.打开网页

from selenium import webdriver

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.baidu.com')  #打开这个网页

2. 新建一个窗口

from selenium import webdriver

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.baidu.com')  #打开这个网页
browser.execute_script('window.open()')    #执行脚本打开新窗口
browser.switch_to_window(browser.window_handles[1])   #切换到新窗口
browser.get('https://www.google.cn')   #在新窗口打开google

3.执行脚本

from selenium import webdriver

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.baidu.com')  #打开这个网页
browser.execute_script('window.open()')
browser.switch_to_window(browser.window_handles[1])
browser.get('https://www.google.cn')

browser.execute_script('alert("欢迎访问google")')   #弹出框
![](http://i2.51cto.com/images/blog/201806/05/a1e071094eadbc8456742dc31e08f566.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

4.自动输入搜索

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.baidu.com')  #打开这个网页

#通过百度搜索python贴吧
input = browser.find_element_by_id('kw')     #搜索输入框位置,并传递给input
input.send_keys('python贴吧')             #在输入框中输入 python贴吧

#提交内容的两种方法
#方法一、
#submit = browser.find_element_by_id('su') #定位提交按钮
#submit.click() #提交,相当于回车
#方法二

input.send_keys(Keys.RETURN)   #这个是直接回车,不是点击的形式,需要Keys这个模块

5. 打印网页源码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.taobao.com')  #打开这个网页
print(browser.page_source)   #打印网页的源码
browser.close()   #关闭浏览器

6. 查找元素

例6.1:通过css选择器查找

from selenium import webdriver

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.taobao.com')  #打开这个网页
doc = browser.find_element_by_css_selector('.service-bd').text  #通过css选择标签
print(doc)
browser.close()

例6.2:直接通过id查找

from selenium import webdriver

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.zhihu.com/explore')  #打开这个网页
doc = browser.find_element_by_id('zh-top-link-logo').text  #打印知乎的logo内容
print(doc)
browser.close()

例6.3:通过xpath查找

from selenium import webdriver

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.zhihu.com/explore')  #打开这个网页
doc = browser.find_element_by_xpath('//*[@id="zh-top-link-logo"]').text
print(doc)
browser.close()

###6.4:其他方式:

find_element_by_link_text      #通过链接查找
find_element_by_partial_link_text    #通过链接模糊查找
find_element_by_tag_name      #通过tag查找
find_element_by_class_name    
详细说明访问:http://selenium-python.readthedocs.io/locating-elements.html#locating-hyperlinks-by-link-text

7. 获取网页的cookie

from selenium import webdriver

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.zhihu.com/explore')  #打开这个网页
cookie = browser.get_cookies()
print(cookie)
browser.close()

添加cookie和删除

from selenium import webdriver

browser = webdriver.Chrome()  #创建一个浏览器对象
browser.get('https://www.zhihu.com/explore')  #打开这个网页

browser.add_cookie({'name':'name','domain':'test.com','value':'gallery'})   #添加cookie
cookie_1 = browser.get_cookies()    #获取cookie内容
print(cookie_1)                #打印cookie
browser.delete_all_cookies()    #删除cookie
cookie_2 = browser.get_cookies()    
print(cookie_2)
browser.close()

8. 等待加载:

由于现在的很多网页app采用的是AJAX动态加载,在不同时间出现的元素就会不一样,因此我们采用了等待元素出现后再进行捕捉

例8.1

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

browser = webdriver.Chrome()  
browser.get('https://s.taobao.com/search?q=%E7%BE%8E%E9%A3%9F')  
try:
#WebDriverWait(browser,1),在抛出超时的之前等待一秒,直到等到ele被查找到的时候
        ele = WebDriverWait(browser,1).until(
                EC.presence_of_element_located((By.CSS_SELECTOR,'#q'))
        )
        #通过CSS_SELECTOR进行查找
except TimeoutError:   #否则抛出超时
        print('timeout....')
browser.close()

其他的一些方式:

title_is
title_contains
presence_of_element_located
visibility_of_element_located
visibility_of
presence_of_all_elements_located
text_to_be_present_in_element
text_to_be_present_in_element_value
frame_to_be_available_and_switch_to_it
invisibility_of_element_located
element_to_be_clickable
staleness_of
element_to_be_selected
element_located_to_be_selected
element_selection_state_to_be
element_located_selection_state_to_be
alert_is_present

猜你喜欢

转载自blog.51cto.com/13155409/2126858