是不是我的二十岁,注定要为selenium掉眼泪

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.common.exceptions import TimeoutException,NoSuchElementException
from time import sleep
import random
def use_selenium():
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # get方法请求网页
    browser.get("https://www.taobao.com/")
    # 输出网页源代码
    print(browser.page_source)
    # 关闭浏览器
    browser.close()

def use_select():
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # get方法请求网页
    browser.get("https://www.taobao.com/")
    # 查找单个节点
    input = browser.find_element_by_xpath("//*[@id='q']")
    print(input)
    # 关闭浏览器
    browser.close()

def use_selects():
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # get方法请求网页
    browser.get("https://www.taobao.com/")
    # 查找多个节点
    input = browser.find_elements_by_css_selector('.service-bd a')
    print(input)
    # 关闭浏览器
    browser.close()
def user_interaction():
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # get方法请求网页
    browser.get("https://www.taobao.com/")
    # 查找单个节点
    input = browser.find_element_by_xpath("//*[@id='q']")
    # 输入
    input.send_keys("口红")
    sleep(1)
    print(input)
    butten = browser.find_element_by_css_selector('.search-bd .search-panel .search-button .btn-search')
    # 点击
    butten.click()
    # 关闭浏览器
    browser.close()

def user_execute_script():
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # get方法请求网页
    browser.get("https://www.taobao.com/")
    for i in range(0,1000,50):
        # 输出现在的高度
        check_height = browser.execute_script("return document.body.scrollHeight;")
        # 暂停时间
        t = random.uniform(1, 3)
        sleep(t)
        # 滚动距离
        h = random.uniform(0, 50)
        browser.execute_script("window.scrollBy(0,{0})".format(h))
        # 滚动之后的高度
        check_height1 = browser.execute_script("return document.body.scrollHeight;")
        # 两次对比
        print(str(check_height) + '**************' + str(check_height1))
    print("end")
def use_implicitly_wait():
    """隐式等待"""
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # 没有找到,等待一段时间后继续查找
    browser.implicitly_wait(10)
    # get方法请求网页
    browser.get("https://www.taobao.com/")
    # 查找单个节点
    input = browser.find_element_by_xpath("//*[@id='q']")
    print(input)
    # 关闭浏览器
    browser.close()

def use_wait():
    """隐式等待"""
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # get方法请求网页
    browser.get("https://www.taobao.com/")
    # 如果在规定时间找到了节点,则返回该节点,否则,抛出异常
    wait = WebDriverWait(browser,10)
    # 查找单个节点
    input = wait.until(ec.presence_of_element_located((By.ID,'q')))
    print(input)
    # 关闭浏览器
    browser.close()

def use_forward_back():
    """前进和后退"""
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # get方法请求网页
    browser.get("https://www.baidu.com/")
    browser.get("https://www.taobao.com/")
    browser.get("http://111.43.36.169/meol/index.do")
    # 后退
    browser.back()
    sleep(1)
    # 前进
    browser.forward()
    sleep(2)
    # 后退
    browser.back()
    # 后退
    browser.back()
    # 关闭浏览器
    browser.close()
def use_cookies():
    """小饼干"""
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # get方法请求网页
    browser.get("https://www.baidu.com/")
    print(browser.get_cookies())
    # browser.add_cookie({})
    # 关闭浏览器
    browser.close()

def use_cookies():
    """选项卡"""
    # 声明浏览器对象
    browser = webdriver.Chrome()
    # 开启选项卡
    browser.execute_script('window.open()')
    # window_handles 获取开启的选项卡列表
    print(browser.window_handles)
    # switch_to.window 切换选项卡
    browser.switch_to.window(browser.window_handles[1])
    browser.get("https://www.baidu.com/")
    sleep(3)
    browser.switch_to.window(browser.window_handles[0])
    browser.get("https://www.taobao.com/")
    # 关闭浏览器
    browser.close()
def use_try_except():
    """异常处理"""
    # 声明浏览器对象
    browser = webdriver.Chrome()
    try:
        browser.get("https://www.baidu.com/")
    except TimeoutException:
        print("Time Out")
    try:
        input = browser.find_element_by_xpath("//*[@id='q']")
        print(input)
    except NoSuchElementException:
        print("No Element")
    # 出现异常之后就会关闭浏览器所以再写finally的时候,意义不大,反而会报错
    # finally:
    #     browser.close()

if __name__ == '__main__':
    use_selenium()
    use_select()
    use_selects()
    user_interaction()
    user_execute_script()
    use_implicitly_wait()
    use_wait()
    use_forward_back()
    use_cookies()
    use_try_except()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章