selenium 用法详解

selenium  webdriver官方文档 

webdriver可以认为是浏览器的驱动器,要驱动浏览器必须用到webdriver,支持多种浏览器,这里以Firefox为例


from selenium import webdriver
#要想调用键盘按键操作需要引入keys包
from selenium.webdriver.common.keys import Keys
def get_browser():
    browser=webdriver.Firefox()
    ## get方法会一直等到页面被完全加载,然后才会继续程序,通常测试会在这里选择 time.sleep(2)
    browser.get("http://www.baidu.com")
    #id="kw"是百度搜索输入框,输入字符串" "
    browser.find_element_by_id("kw").send_keys(u'易烊千玺')
    #id="su"是百度搜索按钮,click() 是模拟点击
    browser.find_element_by_id("su").click()
if __name__=="__main__":
    get_browser()

 元素定位 ,有如下的API 单个元素选取

find_element_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
<input type="submit" id="su" value="百度一下" class="bg s_btn">
<a href="http://www.google.com/search?q=cheese">cheese</a>
<a href="http://www.google.com/search?q=cheese">search for cheese</a>>
#id 定位
browser.find_element_by_id("kw")
#name定位
browser.find_element_by_name("wd")
#class定位
browser.find_element_by_class_name("s_ipt")
#tag定位
browser.find_element_by_tag_name("input")
#link定位
browser.find_element_by_link_text("cheese")
#partial link 定位
browser.find_element_by_partial_link_text("search for")

#Xpath 定位 (可通过复制 XPath )

browser.find_element_by_xpath("//*[@id='kw']")
# CSS定位(可通过复制 CSS 选择器/CSS 路径)
browser.find_element_by_css_selector("#kw")

  用By 定位元素

针对前面的8种定位方法,webdriver还提供了另一套写法,即统一调用find_element() 方法,通过By来声明定位的方法,并且传入对应定位方法的定位参数

from selenium.webdriver.commom.by import By      
browser.find_element(By.ID,"kw")
browser.find_element(By.NAME,'wd')
browser.find_element(By.CLASS_NAME,"s_ipt")
browser.find_element(By.TAG_NAME,"input")
browser.find_element(By.LINK_TEXT,"cheese")
browser.find_element(By.PARTIAL_LINK_TEXT,"for")
browser.find_element(By.XPATH,"//*[@id='kw']")
browser.find_element(By.CSS_SELECTOR, "#kw")

 简单元素操作

  • clear()    清除文本
  • send_keys(*value) 模拟按键输入
  • click()      单击元素

鼠标事件


现在的web产品中,提供了更丰富的鼠标交互方式,例如鼠标右击、双击、悬停、鼠标拖动等功能,在webdriver中,将这些关于鼠标的操作封装在ActionChains 类提供

  • perform()     执行所有ActionChains中存储的行为
  • context_click()        右击
  • double_click()         双击
  • drag_and_drop()     拖动
  • move_to_element()   鼠标悬停
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
def get_browser():
    browser=webdriver.Firefox()
    ## get方法会一直等到页面被完全加载,然后才会继续程序,通常测试会在这里选择 
    browser.get("http://www.baidu.com")
    #定位到要右击的元素
    right_click=browser.find_element_by_css_selector("#kw")
    #对定位到的元素执行鼠标右击的操作
    ActionChains(browser).context_click(right_click).perform()
原文地址:https://www.cnblogs.com/yan-2010/p/14229946.html