selenium選擇元素的方法
·find_element_by_css_selector:通過元素的class選擇,如<div class='bdy-inner'>test</div>可以使用find_element_by_css_selector('div.bdy-inner')。
·find_element_by_xpath:通過xpath選擇,如<form id="loginForm">可以使用driver.find_element_by_xpath("//form[@id='loginForm']")。
·find_element_by_id:通過元素的id選擇,如<div id='bdy-inner'>test</div>可以使用driver.find_element_by_id('bdy-inner')。
·find_element_by_name:通過元素的name選擇,如<input name="username"type="text"/>可以使用driver.find_element_by_name('password')。
·find_element_by_link_text:通過鏈接地址選擇,如<a href="continue.html">Continue</a>可以使用driver.find_element_by_link_text('Continue')。
·find_element_by_partial_link_text:通過鏈接的部分地址選擇,如<a href="continue.html">Continue</a>可以使用driver.find_element_by_partial_link_text('Conti')。
·find_element_by_tag_name:通過元素的名稱選擇,如<h1>Welcome</h1>可以使用driver.find_element_by_tag_name('h1')。
·find_element_by_class_name:通過元素的class選擇,如<p class="content">Site content goes here.</p>可以使用driver.find_element_by_class_name('content')。
有時,我們需要查找多個元素。上述例子就查找了所有的評論。因此,也有對應的元素選擇方法,就是在上述的element后加上s,變成elements。
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
其中,xpath和css_selector是比較好的方法,一方面比較清晰,另一方面相對其他方法定位元素比較准確。
在上述例子中,我們使用了Selenium的click操作元素方法。常見的操作元素方法如下:
·Clear:清除元素的內容。
·send_keys:模擬按鍵輸入。
·Click:單擊元素。
·Submit:提交表單。
user = driver.find_element_by_name("username") #找到用戶名輸入框
user.clear #清除用戶名輸入框內容
user.send_keys("1234567") #在框中輸入用戶名
pwd = driver.find_element_by_name("password") #找到密碼輸入框
pwd.clear #清除密碼輸入框內容
pwd.send_keys("******") #在框中輸入密碼
driver.find_element_by_id("loginBtn").click() #單擊登錄
上述代碼是一個自動登錄程序截取的一部分。從代碼中可以看到,可以用Selenium操作元素的方法對瀏覽器中的網頁進行各種操作,包括登錄。
Selenium除了可以實現簡單的鼠標操作,還可以實現復雜的雙擊、拖拽等操作。此外,Selenium還可以獲得網頁中各個元素的大小,甚至可以進行模擬鍵盤的操作