Selenium(二)元素定位+操作(属性、xpath、time)

Selenium(二)元素定位+操作(属性、xpath、frame)

通过Selenium实现界面自动化测试,基本分为两步,①定位元素;②对其进行操作。可以理解界面自动化是仿照我们人的行为进行的操作,而对我们的操作进行分解也就是两步定位+操作。所以此次,讲解我们如何进行元素定位,并说明一些常见操作,大家就可以动手写自己的第一个用例啦!运行成功之后还是很有成就感的~~

元素定位

每个你所看到的界面上的内容,背后对应着许许多多的属性,至少也有路径,我们就可以通过这个属性进行定位,至于采取哪个方式,这个就因人而异,因环境而差异了。可能这个name在这个页面中多处被使用,那你用name来定位就会造成一定的偏差,继续尝试其他方式即可,不必慌张。

一、属性定位

# 这部分是百度首页搜索框的前端代码

	
	

①id

# 从上面的代码中我们可以看到input那边有个属性是id,内容为kw
find_element_by_id("kw")

②name

# 跟id同理可得
find_element_by_name("wd")

③class

find_element_by_class_name("s_ipt")

④link

#这部分是百度首页,“新闻”按钮对应的前端代码
新闻
# 我们看到代码中有 herf***字样,我们就可以以通过link来进行定位
find_element_by_link_text("新闻")

二、xpath定位
在此不深入讲解,先简单做个小窍门操作,后续再进行更详细的补充
①我们在页面F12定位到该元素后,鼠标放置对应的代码上,右击选择copy→copy xpath
②进行替换

find_element_by_xpath("将这里面的内容进行替换")

操作

一、打开/关闭页面

# 打开网页,引号内替换成要打开的网页地址
driver.get("地址")

# 关闭页面,不用输入地址
driver.quit()

二、点击

# .click()前是对元素的定位,之后是对进行点击;
find_element_by_id("login-submit").click()

三、输入内容

# .send_keys("输入值")前是对元素的定位,之后是对进行输入;
# 根据实际定位方法,后面加上.send_keys("输入值")即可,将输入值替换为你想输入的内容

find_element_by_id("UserName").send_keys("输入值")

四、弹出框确认

switch_to.alert.accept()

五、时间等候

# 首先需要将时间引入
import time

# 时间等候分为显性等候与隐性等候

显性等候即:固定时长的等候,不管页面是否加载完毕;一些加载较为缓慢的页面,可以在对页面进行操作前加上显性等候,否则经常会出现找不到元素的错误
# 固定等待两秒钟
time.sleep(2)

隐形等候即:等候一定时间让某元素加载完毕,如果超过时候还没有加载出来就会报错,但如果在设置的时间内加载出来了,就不会继续等待;可以增加网页的稳定性
# 隐性等候三秒钟
implicitly_wait(3)

这个页面简单做了Selenium的元素定位和操作,大家可以先进行一些尝试,这部分的内容还有很多,后续会进行更多的讲述。下面附上一个小小例子供参考。

# 引入webdriver、时间
from selenium import webdriver
import time

# 设置driver,调取火狐驱动,此处注意后续操作前面都有一个driver. 就是用它来进行操作
driver = webdriver.Firefox()
driver.implicitly_wait(3)# 设置全局隐形等候3秒

# 打开页面,登录
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("Selenium")# 输入Selenium
time.sleep(3)# 固定等候三秒钟
driver.find_element_by_id("su").click()# 点击“百度一下”按钮
time.sleep(5)

# 关闭网页
driver.quit()

你可能感兴趣的:(自动化测试,Selenium,自动化测试,元素定位)