下面的html文件是後面要使用到的form.html,頁面大概以下:css
<!DOCTYPE html> <html> <head> <title>查找元素</title> <meta charset="utf-8"> </head> <body> <div id="container"> <form> user:<input type="text" name="user" id="user"><br /><br /> email:<input type="text" name="email" id="email"><br /><br /> male:<input type="radio" name="sex" id="male" checked=""> female:<input type="radio" name="sex" id="female"><br /><br /> 讀書:<input type="checkbox" name="hobby" id="read" checked=""> 電影:<input type="checkbox" name="hobby" id="movie"> 運動:<input type="checkbox" name="hobby" id="sport"> <br /><br /> 語言:<select> <option value="Python" id="python">Python</option> <option value="Java" id="java" selected="selected">Java</option> <option value="C++" id="cpp">C++</option> </select> <br /><br /> <button type="submit">提交</button> <button type="reset">重置</button> </form> </div> <div> <a href="abc" class="aele">abc</a><br /> <a href="bbc" class="aele">bbc</a><br /> <a href="def" class="aele">def</a><br /> </div> </body> </html>
方法屬性 | 說明 |
---|---|
id_ | 獲取元素的ID |
tag_name | 獲取元素標籤名 |
text | 獲取元素的文本 |
click() | 單擊元素 |
submit() | 提交表單 |
clear() | 清除一個文本輸入元素的文本 |
get_attribute() | 得到元素屬性值 |
is_selected() | 判斷元素是否被選中 |
is_enabled() | 判斷元素是否可用 |
send_keys() | 在輸入框裏輸入內容 |
沒有括號的是屬性,有括號的是方法html
find_element_by_id(id_) find_elements_by_id(id_) find_element_by_name(attr_name) find_elements_by_name(attr_name)
from selenium import webdriver driver = webdriver.Firefox() file_path = r'file:///F:\tmp\form.html' driver.get(file_path) user_ele = driver.find_element_by_id("user") # text print(user_ele.get_attribute("type")) # input print(user_ele.tag_name) # True print(user_ele.is_enabled()) # 將改元素輸入值curitis user_ele.send_keys("curitis") sex_ele = driver.find_element_by_name("sex") # <class 'selenium.webdriver.firefox.webelement.FirefoxWebElement'> print(type(sex_ele)) # True print(sex_ele.is_selected()) # male print(sex_ele.get_attribute("id")) sex_eles = driver.find_elements_by_name("sex") # <class 'list'> print(type(sex_eles)) # True male|True male| for ele in sex_eles: print(" ".join([str(sex_ele.is_selected()), str(sex_ele.get_attribute("id"))]), end="|") print() python_ele = driver.find_element_by_id("python") # False print(python_ele.is_selected()) java_ele = driver.find_element_by_id("java") # True print(java_ele.is_selected())
find_element_by_tag_name(tag_name) find_elements_by_tag_name(tag_name) find_element_by_class_name(class_name) find_elements_by_class_name(class_name)
from selenium import webdriver options = webdriver.FirefoxOptions() options.headless = True driver = webdriver.Firefox(options=options) file_path = r'file:///F:\tmp\form.html' driver.get(file_path) aele = driver.find_element_by_tag_name("a") # abc print(aele.text) aeles = driver.find_elements_by_tag_name("a") # abc bbc def for aele in aeles: print(aele.text, end=" ") print() aele = driver.find_element_by_class_name("aele") # abc print(aele.text) aeles = driver.find_elements_by_class_name("aele") # abc bbc def for aele in aeles: print(aele.text, end=" ")
find_element_by_css_selector(css_selector) find_elements_by_css_selector(css_selector)
from selenium import webdriver options = webdriver.FirefoxOptions() options.headless = True driver = webdriver.Firefox(options=options) file_path = r'file:///F:\tmp\form.html' driver.get(file_path) pytho_sele = driver.find_element_by_css_selector("#python") # Python print(pytho_sele.get_attribute("value")) aele = driver.find_element_by_css_selector(".aele") # abc print(aele.text) aeles = driver.find_elements_by_css_selector(".aele") # abc bbc def for aele in aeles: print(aele.text, end=" ")
find_element_by_xpath(xpath) find_elements_by_xpath(xpath)
from selenium import webdriver options = webdriver.FirefoxOptions() options.headless = True driver = webdriver.Firefox(options=options) file_path = r'file:///F:\tmp\form.html' driver.get(file_path) # 查找id爲email的input print(driver.find_element_by_xpath("//input[@id='email']").get_attribute("id")) # div後的a的倒數第2個 print(driver.find_element_by_xpath("//div/a[last()-1]").text) # div下的第一個a print(driver.find_element_by_xpath("//div/a[position()<2]").text) # div下a標籤下有個文本包含'e'的元素 print(driver.find_element_by_xpath("//div/a[contains(text(),'e')]").text) # div下href='bbc'的a標籤 print(driver.find_element_by_xpath("//div/a[@href='bbc']").text)
find_element_by_link_text(link_text) find_elements_by_link_text(link_text) find_element_by_partial_link_text(partial_link_text) find_elements_by_partial_link_text(partial_link_text)
from selenium import webdriver options = webdriver.FirefoxOptions() options.headless = True driver = webdriver.Firefox(options=options) file_path = r'file:///F:\tmp\form.html' driver.get(file_path) # 必須徹底匹配 print(driver.find_element_by_link_text("abc").get_attribute("href")) # print(driver.find_element_by_link_text("a")) # 只要標籤文本中包含b就能夠 btxt = driver.find_elements_by_partial_link_text("b") for txt in btxt: print(txt.get_attribute("href"))