1.環境準備javascript
下面代碼用記事本編輯,保存爲.html格式,並放在python項目同一目錄下。(此段代碼非原創,來源某課程)css
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>Checkbox</title> <script type="text/javascript" async=" " src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /> <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> </head> <body> <h3>checkbox</h3> <div class="well"> <form class="form-horizontal"> <div class="control-group"> <label class="control-label" for="c1">checkbox1</label> <div class="controls"> <input type="checkbox" id="c1" /> </div> </div> <div class="control-group"> <label class="control-label" for="c2">checkbox2</label> <div class="controls"> <input type="checkbox" id="c2" /> </div> </div> <div class="control-group"><label class="control-label" for="c3">checkbox3</label> <div class="controls"> <input type="checkbox" id="c3" /> </div> </div> </form> </div> </body> </html>
from selenium import webdriver import time import os if __name__ == "__main__": firefox_driver = webdriver.Firefox() path = "file:///" + os.path.abspath("checkbox.html") # 獲取當前路徑下的文件 firefox_driver.get(path) checkboxs = firefox_driver.find_elements_by_css_selector("input[type=checkbox]") # 這裏獲取到一組元素,返回list time.sleep(2) for checkbox in checkboxs: checkbox.click() # 批量勾選 time.sleep(2) firefox_driver.quit()
下拉框處理之SELECT類
須要導入from selenium.webdriver.support.select import Select
a.選擇某一項
select_by_index() 經過索引定位
select_by_value() 經過value值定位
select_by_visible_text() 經過文本值定位,即顯示在標籤中間的值
eg.
Select(firefox_driver.find_element_by_css_selector("select#ShippingMethod")).select_by_visible_text('UPS Next Day Air ==> $12.51')
若是找不到,會拋NoSuchElementException異常
b.獲取options信息
options 返回全部選項元素列表
all_selected_options:提供全部被選中選項的元素列表
first_selected_option:提供第一被選中的選項元素?存疑
c.取消選中項
deselect_all # 取消所有的已選擇項 deselect_by_index # 取消已選中的索引項 deselect_by_value # 取消已選中的value值 deselect_by_visible_text # 取消已選中的文本值
1.先試下一個平平凡凡的selecthtml
方法1.select定位前端
Select(firefox_driver.find_element_by_css_selector("select#ShippingMethod")).select_by_visible_text('UPS Next Day Air ==> $12.51')
方法2.直接定位java
firefox_driver.find_element_by_css_selector("option[value='12.51']").click()
2.若是下拉選擇框,不是select標籤訂義的?python
以百度首頁爲例jquery
2.1 能夠看到鼠標移動到[設置]後,出現選項,可是這並非一個select,鼠標移動到[設置]後,一些屬性值也會發生變化。這裏如何定位呢?(比較好奇這裏的原理,看來前端知識要繼續補充)web
firefox_driver = webdriver.Firefox() # path = "file://" + os.path.abspath("select.html") # 獲取當前路徑下的文件 # firefox_driver.get(path) firefox_driver.get("https://www.baidu.com/") time.sleep(2) el = firefox_driver.find_element_by_css_selector("a.lb+a.pf") ActionChains(firefox_driver).move_to_element(el).perform() time.sleep(1) # el2 = firefox_driver.find_element_by_css_selector("a.pf hover") # 這裏報錯了 # el2.find_element_by_class_name("setpref").click() firefox_driver.find_element_by_link_text("搜索設置").click() time.sleep(3) firefox_driver.quit()
2.2 百度首頁輸入框的這個下拉選擇框,如何選擇歷史記錄或者輸入一部份內容後,選擇檢索出來的選擇列表框呢?留個疑問,明天繼續~ajax