選擇到元素以後,咱們的代碼會返回元素對應的 WebElement對象,經過這個對象,咱們就能夠操控元素了。html
操控元素一般包括:web
點擊元素chrome
在元素中輸入字符串,一般是對輸入框這樣的元素編程
獲取元素包含的信息,好比文本內容,元素的屬性瀏覽器
點擊元素很是簡單,就是調用元素WebElement對象的 click方法。前面已經使用過了。post
當咱們調用WebElement對象的click方法去點擊元素的時候,瀏覽器接收到自動化命令,點擊的是該元素的中心點位置 。學習
輸入字符串也很是簡單,就是調用元素WebElement對象的send_keys方法。前面已經使用過了。ui
html代碼:spa
<h3 style="color: brown">輸入框</h3> <div> <input id="input1" value="請輸入姓名"> <br/><br/> </div>
而且按F12,觀察HTML的內容code
咱們要寫一個自動化程序:要求在輸入框中填入姓名:愛編程的小灰灰。
並且要作到輸入框中已經有的提示字符,須要先清理掉。
代碼應該以下:
from selenium import webdriver wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe') wd.get('http://127.0.0.1:8020/day01/index.html') element = wd.find_element_by_id("input1") element.clear() # 清除輸入框已有的字符串 element.send_keys('愛編程的小灰灰') # 輸入新字符串
經過前面的學習,咱們已經知道,經過WebElement對象的text屬性,能夠獲取元素展現在界面上的文本內容。
好比:
element = wd.find_element_by_id('wolf') print(element.text)
經過WebElement對象的get_attribute方法來獲取元素的屬性值,好比要獲取元素屬性class的值,就可使用element.get_attribute('class')。
html代碼:
<form action="" method="post"> <input type="text" name="" id="input1" value="1" class="inputclass" /> <input type="text" name="" id="input2" value="2" class="inputclass"/> </form>
好比:
from selenium import webdriver wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe') wd.get('http://127.0.0.1:8020/day01/index.html') element = wd.find_element_by_id('input1') print(element.get_attribute('class'))
執行完自動化代碼,若是想關閉瀏覽器窗口能夠調用WebDriver對象的 quit 方法,像這樣 wd.quit()。
要獲取整個元素對應的HTML文本內容,可使用element.get_attribute('outerHTML')。
若是,只是想獲取某個元素內部的HTML文本內容,可使用element.get_attribute('innerHTML')。
對於input輸入框的元素,要獲取裏面的輸入文本,用text屬性是不行的,這時可使用element.get_attribute('value')。
好比:
from selenium import webdriver wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe') wd.get('http://127.0.0.1:8020/day01/index.html') element = wd.find_element_by_id("input1") print(element.get_attribute('value')) # 獲取輸入框中的文本
經過WebElement對象的text屬性,能夠獲取元素展現在界面上的文本內容。
可是,有時候,元素的文本內容沒有展現在界面上,或者沒有徹底徹底展現在界面上。這時,用WebElement對象的text屬性,獲取文本內容,就會有問題。
出現這種狀況,能夠嘗試使用element.get_attribute('innerText'),或者element.get_attribute('textContent')。