选择到元素以后,咱们的代码会返回元素对应的 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')。