Selenium中元素的get_attribute、get_property、text的区别
在定位到元素后,我们通常都会取用元素的值,在这里主要会用到get_attribute、get_property、text三个,那这三者又有什么区别呢,下面通过一段代码来了解。
from selenium.webdriver.common.by import By
from selenium import webdriver
import pytest
from time import sleep
def test_input_and_getText():
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
driver = webdriver.Chrome(options=options, executable_path=r'C:\Users\sg0100\Downloads\chromedriver_win32\chromedriver.exe')
driver.get("https://www.baidu.com")
driver.maximize_window()
print("title: ",driver.title)
ele1 = driver.find_element(By.ID,'kw')
ele1.send_keys("Selenium")
# sleep(3)
print("ele1的text属性: ",ele1.text)
print("ele1的attribute属性: ",ele1.get_attribute("value"))
print("ele1的attribute属性: ",ele1.get_attribute("value"))
print("ele1的property属性: ",ele1.get_property("id"))
print("ele1的property属性: ",ele1.get_property("name"))
sleep(3)
ele2 = driver.find_element(By.ID,'su')
print("ele2的text属性: ",ele2.text)
print("ele2的attribute属性: ",ele2.get_attribute("value"))
print("ele2的property属性: ",ele2.get_property("value"))
print("ele2的property属性: ",ele2.get_property("id"))
print("ele2的property属性: ",ele2.get_property("name"))
sleep(3)
ele3 = driver.find_element(By.LINK_TEXT,'设置')
print("ele3的text属性: ",ele3.text)
print("ele3的attribute属性: ",ele3.get_attribute("value"))
print("ele3的property属性: ",ele3.get_property("value"))
print("ele2的property属性: ",ele2.get_property("id"))
print("ele2的property属性: ",ele2.get_property("name"))
driver.quit()
if __name__ == "__main__":
test_input_and_getText()
输出结果:
title: 百度一下,你就知道
ele1的text属性:
ele1的attribute属性: Selenium
ele1的attribute属性: Selenium
ele1的property属性: kw
ele1的property属性: wd
ele2的text属性:
ele2的attribute属性: 百度一下
ele2的property属性: 百度一下
ele2的property属性: su
ele2的property属性:
ele3的text属性: 设置
ele3的attribute属性: None
ele3的property属性: None
ele2的property属性: su
ele2的property属性:
可以看到,对于一些input类的元素对它们使用get_attribute和get_property是可以获取到元素属性值的,而对于一些元素本身是文字显示的就只有text才能获取到值。
另外,get_attribute和get_property也有区别,property是DOM中的属性,是JavaScript里的对象;而attribute是HTML标签上的特性,它的值只能够是字符串。
简单的说:
- get_property 就是取元素属性的,该元素有id,有name,就可以通过该方法取。
- get_attribute(“value”),就是取文本框中输入的内容或取元素属性值。
- .text 属性,就是元素本身的文字显示。