自动化测试---选择元素

第一个自动化测试脚本

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Chrome(service=Service(r'D:\eg浏览器下载文件\chromedriver-win64\chromedriver.exe'))

# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://www.baidu.com')

# 程序运行完会自动关闭浏览器,就是很多人说的闪退
# 这里加入等待用户输入,防止闪退
input('等待回车键结束程序') 

这样写会有问题,就是每一次都要制定路径,所以我们将路径添加到path里面。写代码时,就可以无需指定浏览器驱动路径了,像下面这样

wd = webdriver.Chrome()

一定要注意的是, 加入环境变量 Path 的,不是浏览器驱动全路径,比如

d:\tools\chromedriver.exe

而是

d:\tools


选择元素方法

通过id选择元素:

# 根据id选择元素,返回的就是该元素对应的WebElement对象
element = wd.find_element(By.ID, 'kw')

通过class名选择元素:

wd.find_elements(By.CLASS_NAME, 'animal')


注意element后面多了个s,如果不加s,那么久只会返回第一个元素

一个标签有多个class属性呢??
例子:

<span class="chinese student">张三</span>
element = wd.find_elements(By.CLASS_NAME,'chinese')

element = wd.find_elements(By.CLASS_NAME,'student')

上面两种都能选择,但是不能写成:

element = wd.find_elements(By.CLASS_NAME,'chinese student')

输入元素:

element.send_keys('通讯\n')

循环元素

for element in elements:
    print(element.text)

输出元素

print(element.text)

根据tag

我们可以通过指定 参数为 By.TAG_NAME ,选择所有的tag名为 div的元素,如下所示

elements = wd.find_elements(By.TAG_NAME, 'div')

不仅 WebDriver对象有 选择元素 的方法, WebElement对象 也有选择元素的方法。

WebElement对象 也可以调用 find_elements, find_element 之类的方法

WebDriver 对象 选择元素的范围是 整个 web页面, 而

WebElement 对象 选择元素的范围是 该元素的内部。


sleep

# 等待 1 秒
from time import sleep
sleep(1)

因为我们的代码执行的速度比 网站响应的速度 快。

但是这样的方法 有个很大的问题,就是:设置等待多长时间合适呢?

Selenium 的 Webdriver 对象 有个方法叫 implicitly_wait ,可以称之为 隐式等待 ,或者 全局等待 。

wd.implicitly_wait(10)

如果找不到元素, 每隔 半秒钟 再去界面上查看一次, 直到找到该元素, 或者 过了10秒 最大时长。


清除元素和输入元素

element = wd.find_element(By.ID, "input1")

element.clear() # 清除输入框已有的字符串
element.send_keys('白月黑羽') # 输入新字符串

获取元素的属性值

element = wd.find_element(By.ID, 'input_name')
print(element.get_attribute('class'))

常用:

1.获取classprint(element.get_attribute('class'))
2.获取html中的文本内容element.get_attribute('innerHTML')
3.获取输入框文字print(element.get_attribute('value'))
4.获取text属性(可以获取元素 展示在界面上的 文本内容。)print(element.get_attribute('text'))

注意:有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。 这时,用WebElement对象的text属性,获取文本内容,就会有问题。出现这种情况,可以尝试使用color=red>element.get_attribute('innerText') ,或者 element.get_attribute('textContent')

使用 innerText 和 textContent 的区别是,前者只显示元素可见文本内容,后者显示所有内容(包括display属性为none的部分)

get_attribute 调用本质上就是调用 HTMLElement 对像的属性!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值