• Selenium登录126邮箱,chrome定位不到账号输入框解决办法


    使用id定位Message: no such element: Unable to locate element: {"method":"id","selector":"auto-id-1537235284167"},找不到元素。原因是由于此id是动态id,每次刷新http://www.126.com页面该值都会变话。因此找不到对应元素。

    使用类定位原因是:该class是含有空格的复合类。无法直接使用find_element_by_class_name()方法查询。

    使用xpath路径定位,每次获取元素都失败,最后网上查了下发现其嵌套在表单frame/iframe中,所以我们先要进入frame/iframe中,然后再定位。


    frame/iframe的定位方式有3种,一是通过id;二是通过name;三是xpath。

    例:switch_to_frame(id)  ; 或是  switch_to_frame(name);若frame没有id和name,只能是通过xpath方式定位到frame,switch_to_frame(xpath)

    代码如下:

    复制代码
     1 from selenium import webdriver
     2 import time
     3 
     4 url = 'http://www.126.com'
     5 driver = webdriver.Firefox()
     6 driver.get(url)
     7 driver.switch_to.frame("x-URS-iframe")  #进入到表单中
     8 time.sleep(5)
     9 #使用Xpath定位
    10 driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[2]/form/div/div[1]/div[2]/input').send_keys('11111')
    复制代码

     以上可以解决Firefox的问题,但是在Chrome上却找不到frame。

    Chrome解决办法:

    driver.switch_to.frame("x-URS-iframe")这个括号内可以写入frame的序号,如有多个frame,最外层的为0,里面为1,以此类推。
    所以 driver.switch_to.frame(0),这样就可以了。

  • 相关阅读:
    数组相似性计算
    关于GANs原论文里的数学证明
    Python 画个图
    Golang脱坑指南: goroutine(不断更新)
    Java面试细节整理(不断更新)
    从统计看机器学习(二) 多重共线性的一些思考
    从统计看机器学习(一) 一元线性回归
    数据库存储技术基础(一) 字典编码
    JVM内存管理笔记
    R语言rank函数详细解析
  • 原文地址:https://www.cnblogs.com/linxiu-0925/p/9909019.html
Copyright © 2020-2023  润新知