selenium安装配置及基本使用

1.安装并配置selenium

1.1 下载selenium库

pip install selenium==3.3.0

1.2 安装chromedriver

2. selenium使用

2.1导入相关库

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

2.2配置相关属性

option = webdriver.ChromeOptions()  
option.add_argument('window-size=1920x3000')  # 指定浏览器分辨率
option = webdriver.ChromeOptions( )
option.add_argument('window-size=1920x3000')  # 指定浏览器分辨率
option.add_argument('--headless') #无头
option.add_argument('--disable-gpu')
option.add_argument('--hide-scrollbars')  # 隐藏滚动条, 应对一些特殊页面
option.add_argument('--proxy-server=http://127.0.0.1:1087') #添加代理

2.3 基本使用

  • 请求
     url='https:wwww.baidu.com'
     driver = webdriver.Chrome(chrome_options=option)
     driver.maximize_window() # 设置最大的窗口
     driver.get(url) # 访问连接
     driver.save_screenshot("baidu.png") # 截图
    
  • 查看请求信息
    driver.page_source   # 获取页面内容
    driver.get_cookies() # 获取cookie
    driver.current_url # 获取当前的url
    
  • 获取cookie
    dictCookies = driver.get_cookies()
    
  • 添加cookie
    cookies ={
    "_routing_id":"46139510-8ede-424f-b63a-e8d7aa4bdfa4",
    "sessionFunnelEventLogged":"1",
    "_auth":"1",
    "g_state":'{"i_l":0}',
    "cm_sub":"allowed"
    }
    driver.get(url) # 请求
    # 添加cookie
    driver.add_cookie({'name':'_routing_id','value':cookies['_routing_id']})
    driver.add_cookie({'name':'sessionFunnelEventLogged','value':cookies['sessionFunnelEventLogged']})
    driver.add_cookie({'name':'_auth','value':cookies['_auth']})
    driver.add_cookie({'name':'g_state','value':cookies['g_state']})
    driver.add_cookie({'name':'cm_sub','value':cookies['cm_sub']})
    #重新请求
    driver.get(url)
    
  • 删除cookie
    #  删除一条cookie
    driver.delete_cookie("CookieName")
    # 删除所有的cookie
    driver.delete_all_cookies()
    
  • 退出
    driver.close()  # 退出当前页面
    driver.quit()   # 退出浏览器
    

3.元素方法

3.1 元素定位【2种方式】

  • 使用id值定位【By.ID 】

    el = driver.find_element(By.ID, '')
    el = driver.find_element_by_id()            
    
  • 使用xpath定位【By.XPATH】

    el = driver.find_element(By.XPATH, '')
    el = driver.find_element_by_xpath()         
    
  • 使用标签名定位【By.TAG_NAME】

    el = driver.find_element(By.TAG_NAME, '')
    el = driver.find_element_by_tag_name()     
    
  • 使用超链接文本定位【By.LINK_TEXT】

    el = driver.find_element(By.LINK_TEXT, '')
    el = driver.find_element_by_link_text() 
    
  • 使用部分超链接文本定位【By.PARTIAL_LINK_TEXT】

    el = driver.find_element(By.PARTIAL_LINK_TEXT  , '')
    el = driver.find_element_by_partial_link_text()
    
  • 使用name属性值定位【By.NAME】

    el = driver.find_element(By.NAME, '')
    el = driver.find_element_by_name()
    
  • 使用class属性值定位【By.CLASS_NAME 】

    el = driver.find_element(By.CLASS_NAME, '')   
    el = driver.find_element_by_class_name()
    
  • 使用css选择器定位【By.CSS_SELECTOR】

    el = driver.find_element(By.CSS_SELECTOR, '')  
    el = driver.find_element_by_css_selector()
    
  • 查找输入框

    input_name=driver.find_element(By.XPATH, '//input[@placeholder="Airport, country, hashtag, etc."]')  
     input_name.send_keys(point,Keys.ENTER) # 回车
    
  • 查找兄弟的下一个文本数据

    # 根据文本确认位置,在查询兄弟节点
    text=driver.find_elements(By.XPATH,"//*[text()='Coordinates']/following-sibling::td")[0].text
    
  • 获取页面html源码

    html=driver.page_source
    
  • 滚轮滑动

    # 一次滑动
    js = "window.scrollTo(0,800);"
    driver.execute_script(js)
    # 多次滑动
    for i in range(10):
    	js='window.scrollBy(0,200)'
    	driver.execute_script(js)
    

3.2 元素操作

代码含义
el.get_attribute(key)获取key属性名对应的属性值
el.text获取开闭标签之间的文本内容
el.click()对元素执行点击操作
el.submit()对元素执行提交操作
el.clear()清空可输入元素中的数据
el.send_keys(data,Keys.ENTER)向可输入元素输入数据,并且回车

3.3 等待操作

  • 强制等待
    import time
    time.sleep(n)  
    
  • 显式等待
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    WebDriverWait(driver, 10,0.5).until( EC.presence_of_element_located((By.ID, "myDynamicElement"))
    # \设置最长等待时间10,在10秒内每隔0.5秒使用指定条件去定位元素,如果定位到元素则直接结束等待,如果在10秒结束之后仍未定位到元素则报错 
    
  • 隐式等待
    driver.implicitly_wait(10) # 在指定的n秒内每隔一段时间尝试定位元素,如果n秒结束还未被定位出来则报错
    

3.4 窗口切换

  • 获取当前所有的窗口
    current_windows = driver.window_handles
    
  • 窗口索引切换
    driver.switch_to.window(current_windows[1])
    
  • 跳转到最后一个窗口
    driver.switch_to.window(web.window_handles[-1]) 
    
  • 跳到第一个窗口
    driver.switch_to.window(current_windows[0])
    
  • 获取iframe窗口元素
    driver.switch_to.frame(name/el/id) 
    
  • 获取弹窗信息
    alert = driver.switch_to_alert()
    

3.5页面操作

  • 前进
    driver.forward()
    
  • 后退
    driver.back() 
    
  • 刷新
    driver.refresh() 
    
  • 关闭当前窗口
    driver.close()
    
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荼靡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值