Python+selenium实现Web自动化测试的各种元素定位

一、先安装selenium驱动或者插件

这是我另一篇博客,详细的介绍了各种浏览器如何安装:
https://blog.csdn.net/qq_43107323/article/details/105423492

二、编写Python代码;我这里是网上最全的元素定位

from selenium import webdriver
import time

dr = webdriver.Chrome()
# 打开登陆163邮箱的网页
dr.get('http://mail.163.com/')

# 将浏览器窗口最大化
dr.maximize_window()

# 1、id
btn = dr.find_element_by_id('lbNormal').click()

# 2、找到邮箱账号登录框对应的iframe	#跳入框架
# 1、xpath 绝对路径
dr.switch_to.frame(dr.find_element_by_xpath("/html/body/div[2]/div[3]/div/div[3]/div[4]/div[1]/div/iframe"))  # 跳入框架
# 2、xpath 相对路径	有些变化的不适合用
# dr.switch_to.frame(dr.find_element_by_xpath('//*[@id="x-URS-iframe1587572206248.1785"]'))
# 3、使用元素名+属性值	常用的
# dr.switch_to.frame(dr.find_element_by_xpath("//*[@frameborder='0']"))
# 4、使用元素名+包含部分属性值
# dr.find_element_by_xpath("//*[contains(@name,'email')]").send_keys('123456789')	#获取手机号输入框
# 5、通过元素名+元素的文本内容	获取超链接,注意空格	不建议用
# dr.find_element_by_xpath("//*[text()='忘记密码?']").click()
# 6、通过元素名定位	获取页面所有的input元素 和 tag_name 差不多;仅限第一个元素
# driver.find_element_by_xpath('//input').send_keys("666888")
# 7、 通过元素名+索引定位
# driver.find_element_by_xpath('//div[1]/input').send_keys("666888")

# 3、name
dr.find_element_by_name('email').send_keys('15890501589')

#  4、使用tag_name 标签名
# dr.find_element_by_tag_name('input').send_keys('15890501589')

# 找到密码输入框 输入自己的邮箱密码
# 5、class_name 如果有空格,可以用空格前 中间 后面的部分,但是这些属性值是唯一的
dr.find_element_by_class_name('dlpwd').send_keys('123456')

# 找到登陆按钮
dr.find_element_by_id('dologin').click()

dr.implicitly_wait(3)  # 智能等待
# 错误的密码
false_password = dr.find_element_by_class_name("ferrorhead").text
if false_password == '帐号或密码错误' :
	print(false_password)
	# 清除按钮
	dr.find_element_by_xpath('/html/body/div[2]/div[2]/div[2]/form/div/div[3]/div[3]/div').click()
else :
	print('密码正确')


# 断言
dr.switch_to.default_content()  # 跳出框架
dr.implicitly_wait(2)  # 智能等待
real_result = dr.find_element_by_class_name('nui-tree-item-text').text
print(real_result)
if real_result == "收件箱":
	print('登录成功')
else:
	print('执行失败')
dr.implicitly_wait(2)  # 智能等待

# 6、link_text	超链接内容
dr.find_element_by_link_text('升级VIP').click()
# 7、partial_link_text 部分文本
dr.find_element_by_partial_link_text('VIP').click()

# css_selector
# 1、css_selector	id #表示
#  dr.find_element_by_css_selector('#lbNormal').click()
#  2、标签+id
# dr.find_element_by_css_selector('div#lbNormal').click()
# # 3、classname .表示
# # dr.find_element_by_css_selector('.nui-tree-item-text').click()
# # 4、标签+classname .表示
# dr.find_element_by_css_selector('span.nui-tree-item-text').click()
# # 5、标签+属性和属性值
# btn = dr.find_element_by_css_selector("span[title='收件箱']").click()
#
# # 6、表签+属性和属性值的方式:	模糊匹配
# # 1、匹配属性值的前部分^
# dr.find_element_by_css_selector("span[title^='收']").click()
# # 2、匹配属性值的前部分*
# dr.find_element_by_css_selector("span[title^='件']").click()
# # 3、匹配属性值的后部分$
# dr.find_element_by_css_selector("span[title^='箱']").click()
#
# # 7、子孙元素方式(和xpath路径类似)
# dr.find_element_by_css_selector("div#dvNavTree>ul>li>div").click()
# dr.find_element_by_css_selector("div#dvNavTree div").click()


# 8、句柄	页面的唯一标识,相当于页面的省份证号
dr.find_element_by_link_text("升级VIP").click()
print("当前页面的title", dr.title)
print("当前页面的句柄", dr.current_window_handle)  # 打印当前的句柄

list_handle = dr.window_handles  # 获取所有的句柄	2个句柄
print(type(list_handle))
print(list_handle)
# dr.switch_to_window(list_handle[1])

for handle in list_handle:
	if handle != dr.current_window_handle:
		dr.switch_to_window(handle)
print("当前页面的title", dr.title)
print("当前页面的句柄", dr.current_window_handle)

# time.sleep(3)
# dr.quit()


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值