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()