转自:https://www.cnblogs.com/wuhl-89/p/7778463.html
查看元素发现id为动态,所以不选择以id定位。
使用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),这样就可以了。