from selenium import webdriver
#創建WebDriver類型的對象,指明使用谷歌瀏覽器驅動,其中Chrome實質上是一個WebDriver

項目路徑下的類文件說明中有體現,是webdriver的別名

wd=webdriver.Chrome(r'D:\chromedriver_win32\chromedriver.exe')
#用get方法打開被測http網站 wd.get('http://www.baidu.com')
#方法1:在被測頁面按F12看開發者工具窗口,在網頁按住Ctrl+移動指針到需要查找的元素,開發者窗口會有相應元素的高亮部分。
#方法2:直接右擊待捕捉元素組件,點擊“檢查”,開發者窗口會有相應元素的高亮部分。
根據組件元素的id值捕捉元素 find_element_by_id #比如百度的搜索框id為kw,用webdriver定義的對象調用方法find_element_by_id(‘id值’) element=wd.find_element_by_id('kw') #調用方法send_keys('文本框輸入的內容')在對象元素里輸入內容 element.send_keys('cuiken') #方法同上,調用同上方法查找“搜索”鍵元素的id值 element2=wd.find_element_by_id('su') #調用方法click為點擊id值為su的動作 element2.click('su')
根據組件元素的class屬性捕捉元素 find_elements_by_class_name 注:elements為復數形式,若為單數形式,則輸出class類的第一個元素 # 根據 class name 選擇元素,返回的是 一個列表 # 里面 都是class 屬性值為 animal的元素對應的 WebElement對象 elements = wd.find_elements_by_class_name('animal') # 取出列表中的每個 WebElement對象,打印出其text屬性的值 # text屬性就是該 WebElement對象對應的元素在網頁中的文本內容 for element in elements: print(element.text) 如果我們把 elements = wd.find_elements_by_class_name('animal') 去掉一個s ,改為 element = wd.find_element_by_class_name('animal') print(element.text) 那么返回的就是第一個class 屬性為 animal的元素
find_element 和 find_elements 的區別
使用 find_elements 選擇的是符合條件的 所有 元素, 如果沒有符合條件的元素, 返回空列表
使用 find_element 選擇的是符合條件的 第一個 元素, 如果沒有符合條件的元素, 拋出 NoSuchElementException 異常
class有多個類型時
#就像一個 學生張三 可以定義有 多個 類型: 中國人 和 學生 , 中國人 和 學生 都是 張三 的 類型。 #元素也可以有 多個class類型 ,多個class類型的值之間用 空格 隔開,比如 <span class="chinese student">張三</span> #注意,這里 span元素 有兩個class屬性,分別 是 chinese 和 student, 而不是一個 名為 chinese student 的屬性。 #我們要用代碼選擇這個元素,可以指定任意一個class 屬性值,都可以選擇到這個元素,如下 element = wd.find_elements_by_class_name('chinese') #或者 element = wd.find_elements_by_class_name('student') #而不能這樣寫 element = wd.find_elements_by_class_name('chinese student')
根據tag名捕捉元素
# 根據 tag name 選擇元素,返回的是 一個列表 # 里面 都是 tag 名為 div 的元素對應的 WebElement對象
elements = wd.find_elements_by_tag_name('div') # 取出列表中的每個 WebElement對象,打印出其text屬性的值 # text屬性就是該 WebElement對象對應的元素在網頁中的文本內容
for element in elements: print(element.text)
通過WebElement對象選擇元素 不僅 WebDriver對象有 選擇元素 的方法, WebElement對象 也有選擇元素的方法。 WebElement對象 也可以調用 find_elements_by_xxx,find_element_by_xxx 之類的方法 WebDriver 對象 選擇元素的范圍是 整個 web頁面, 而 WebElement 對象 選擇元素的范圍是 該元素的內部。 element = wd.find_element_by_id('container') # 限制 選擇元素的范圍是 id 為 container 元素的內部。
spans = element.find_elements_by_tag_name('span') for span in spans: print(span.text) 輸出結果就只有 內層11 內層12 內層21
部分轉載自:白月黑羽教程
