selenium 常用操作方法

 

Selenium 常用操作方法

1.初始化浏览器操作

  • from selenium import webdriver  
  • driver=webdriver.Chrome()
2.浏览器最大化操作
  • driver.maximize_window()
3.设置浏览器窗口大小
  • driver.set_window_size(500,780)
4.关闭浏览器
  • driver.quit()
5.访问一个页面:
  • driver.get(url)  
6.获取页面的标题
  • driver.title 
7.关闭当前页面
  • driver.close()
 
8.元素对象获取
----------------------------------------------方式一---------------------------------------

  ele=driver.find_element_by_xxx('定位表达式')     获取匹配到的第一个元素

  ele = driver.find_elements_by_xxx('表达式')    获取匹配到的全部元素,得到一个列表

-------------------------------------------方式二---------------------------------------------

  from selenium.webdriver.common.by import By

  el = driver.find_element(By.ID,'表达式')

--------------------------------------方式三----------------------------------------------------

  from selenium.webdriver.common.by import By

  search = (By.ID,'表达式')

  el = driver.find_element(*search)  # 元组解包

9.获取元素的文本内容
  • ele.text
10.获取元素的某个属性
  • ele.get_attribute('属性名称')
11.元素的输入操作
  • ele.send_keys('文本')
12.元素的点击操作
  • ele.click()
13.clear()  清除文本
  • ele.clear()

等待操作 

1.强制等待
  • sleep(秒)    通常作为辅助方式    弊端:不够智能
        from time import sleep
        sleep(5)
2.隐形等待
  • implicitly_wait(等待上限)
  • 等待的条件: 元素找到
  • 特点: 1.有等待上限
          2.在等待上限时间内,只要元素找到了,就不再等待。
          3.全局性的等待。只需要加一次。driver.implicitly_wait(10)
    设置最长等待时间,在这个时间内只要有个时间点加载完成,则执行下一步代码(整个driver 会话周期内,设置一次即可,全局都可用)
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get('https://ke.qq.com/')
    driver.maximize_window() # 窗口最大化
    driver.implictly_wait(30)#等待时间30s
    driver.find_element_by_id('js_login').click()
 
3.显性等待
WebDriverWait等待(等待上限,轮询时间(0.5)) + 条件expected_condtions
  使用webdriverwait 类和expected_conditions 模块
  明确等到某个条件满足之后,再去执行下一步操作
  程序每隔xx 秒看一眼,如果条件成立了,就执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。
  WebDriverWait(driver,30).until(条件)
  WebDriverWait 类: 显性等待类 WebDriverWait(driver,等待时长,轮询周期).until/until_not(判断条件)
  until 方法: 直到满足xxx 条件,就不等待了 until_not 方法: 直到不满足xxx 条件,就不等待了
 
  • 使用之前需要先引入库
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
  • 确定元素的定位表达式 web_loc = 'xx'
  • 调用webdriverWait 类设置等待总时长,轮询周期。

     WebDriverWait(driver,总时长,轮询周期).until(判断条件)

  • 使用expected_confitions 对应的方大生成判断条件 EC.方法名(定位方式,定位表达式)
    EC.presence_of_element_located(By.ID,web_x x表达式)
  expected_conditions 里常用的方法:
    presence_of_element_located  元素存在
    visibility_of_element_located  元素可见
    invisbility_of_element_located  元素不可见
    text_to_be_present_in_element  元素的文本展示出来
    new_window_is_opened  新窗口打开
代码实例1:
  from selenium import webdriver
  from selenium.webdriver.support.wait import WebDriverWait
  from selenium.webdriver.support import expected_conditions as EC
  from selenium.webdriver.Common.by import By
  driver = webdriver.Chrome()
  login=(By.ID,'kw')
  login_id = WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located(login)

 

代码实例2:
  from selenium import webdriver
  from selenium.webdriver.support.wait import WebDriverWait
  from selenium.webdriver.support import expected_conditions as EC
  from selenium.webdriver.Common.by import By
  driver = webdriver.Chrome()
  loc = (By.XPATH,'//a[text()='腾讯课堂']')
  WebDriverWait(driver,10).until(EC.visibility_of_element_located(loc))
  driver.find_element(*loc).click()
 
  wait = WebDriverWait(driver,10)
  wait.until(EC.visibility_of_element_located(loc))
posted @ 2021-02-14 21:54  胖虎大人v  阅读(185)  评论(0)    收藏  举报