find_element元素定位

在WebDriver Python语言中,提供了find_element方法,每次IDE进行方法搜索的时候,这个方法都会显现在提示框中。find_element这个方法是干什么用的,怎么用呢?!

find_element方法也是元素定位方法,与find_element_by_id和find_element_name类似,区别在于这个方法更加宽泛,例如,find_element_by_id只能通过id进行定位,find_element_name只能提供元素name进行定位。

# 通过属性定位元素
# by, 通过什么属性
# value, by属性的具体值
find_element(by, value)

以百度搜索Bela为例,看看id和name如何完成测试用例。百度搜索输入框、按钮的Html元素:

// 百度搜索输入框
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
...
// 百度搜索按钮
<input type="submit" id="su" value="百度一下" class="bg s_btn">

通过id定位

如上,百度搜索输入框、搜索按钮的id分别为ke和su,使用find_element来完成搜索Bela的测试用例,代码:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
# 选择id定位元素
# 定位百度搜索框,输入Bela
driver.find_element(by="id", value="kw").send_keys("Bela")
# 定位百度搜索按钮,点击
driver.find_element(by="id", value="su").click()
# sleep(5)
driver.quit()

运行以上测试用例,就可以输入Bela并完成搜索了。

通过name定位

find_element是支持不同属性的,有by参数决定。能够通过id定位,那么也可以通过name来定位。同样,以百度搜索Bela为例,用name来定位,找到百度搜索框、百度按钮的name属性,实现代码如下:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
# 选择id定位元素
# 定位百度搜索框,输入Bela
driver.find_element(by="name", value="wd").send_keys("Bela")
# 定位百度搜索按钮,点击
driver.find_element(by="id", value="su").click()
# sleep(5)
driver.quit()

完成代码的时候发现,百度按钮是没有name属性的,那依然用id来进行定位。运行以上测试用例就能够打开百度、输入Bela进行搜索了!

最后

通过find_element定位的方法使用度不高,目前常用的就是XPath与CSS。虽然CSS效率高,但XPath有的时候更加便利一些。因为find_element使用度不高,估计外来WebDriver也有可能去除该方法了。作为自动化测试开发同学,多掌握一个方法,在实际应用中就多一个选择!

IT赶路人

专注IT知识分享