pycharm+selenium中定位元素失败原因及解决方法

最近在学习python,在pycharm写了一点简单的代码,在做自动化测试时发现定位元素时总是会出现各种各样的错误,故总结一下。
先贴成功例子:

`from selenium import webdriver
 from time import sleep
 dirver = webdriver.Chrome()
 dirver.get("https://mail.163.com/")
 dirver.find_element_by_id("switchAccountLogin").click()
 dirver.switch_to.frame(0)
 a=dirver.find_element_by_name("email")
 a.clear()
 a.send_keys("     ")  # “ ”里面填邮箱账户
 b=dirver.find_element_by_name("password")
 b.clear()
 b.send_keys(" ") #“ ” 里面填邮箱密码
 dirver.find_element_by_id("dologin").click()
 sleep(5)    #需要等待网页刷新
 dirver.find_element_by_xpath("//*[@id='_mail_component_19_19']/span[2]").click()
 sleep(3)
 er.find_element_by_class_name('nui-editableAddr-ipt').send_keys(" ")#“ ” 里面填待发送邮箱账户
 sleep(3)
  dirver.find_element_by_xpath("//*[@class='ua-notIE skyblue ua-chrome frame-default frame-auto']/div[2]/div/div/div/section/header/div[2]/div/div/div/input").send_keys("自动化测试发邮件")  #主题
sleep(3)
dirver.switch_to_frame(dirver.find_element_by_xpath("//div[@class='APP-editor-edtr']/iframe"))
sleep(3)
c=dirver.find_element_by_xpath("//*[@class='nui-scroll']/div")
c.clear()
c.send_keys("qqqqqq")  #发送内容
dirver.switch_to_default_content() # 从iframe里面切换出来
sleep(5)
######添加附件
dirver.find_element_by_xpath("//*[@class='fv0']/div[2]/input").send_keys(r"  ")  # “ ”里面填附件绝对地址
#####
dirver.find_element_by_xpath("//div[@class='nui-toolbar-item']/div/span[2]").click()
sleep(5)
arr_text = dirver.find_element_by_class_name("tK1").text   #打印发送结果
print(arr_text)
`



这段代码实现的功能是:自动登录网易云邮箱,然后自动给某邮箱发邮件(含附件)

至于添加附件,虽然成功了,但不知道添加视频等大文件效果如何。

其中常规的错误(定位失败)更改定位方式基本上就能解决(id、name、class、xpath),我在此主要说的错误情况是:在网页上点检查元素时通过在ctrl+f显示出来的框里面定位元素时显示路径正确(例如下图),但是在pycharm里面运行结果显示Unable to locate element

在这里插入图片描述
此时需要去检查以下原因:

  1. 网页还没有加载出来。 解决办法:加sleep等待。
  2. 某些id、name会变。 解决办法:用xpath去定位,这样准确性相对来说比较高(id、name中带数字的尽量不要使用)。
  3. 网页存在嵌套,需要切换到相应的iframe。 解决办法:dirver.switch_to.frame(0)切屏,()里面的内容填id/name/index。
  4. 元素没有在iframe里面,之前进入iframe后没有退出。 解决办法:dirver.switch_to_default_content()。从里面切出来。
  5. 点击按钮之后,网页跳转,页面不一样了。
    解决办法:for handle in dirver.window_handles:
    dirver.switch_to_window(handle)

以上5种是我所发现定位成功但运行失败并提示找不到元素的原因及解决办法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值