前一段时间在用python的selenium自动登录某网站的时候,总是失败,仔细检查调整了定位的方法,从CSS_NAME,换到XPATH,再到ID,依然失败,真是百思不得其解。

通过google了解到。出现这样的错误是因为页面里面需要定位的元素包含在iframe标签之内。
https://blog.51cto.com/huny/3267181
如果页面中包含了iframe标签,定位前首先需要切换到此iframe,然后再进行定位。用到的代码也很简单:
driver = webdriver.Chrome()
driver.switch_to_frame("name值")
回到自己的问题,经过查找,代码中的确包含iframe标签,不过又遇到一个问题,那就是自己的这个iframe标签里面并不包含“name”和“ID”。而且网页中不止一处iframe标签。

最后想到了《自学是门手艺》中讲到,最好的教程其实就是官方文档,因为它们最全面,权威。果不其然,在函数的官方文档中找到了线索。其实前面网页里面的教程中漏掉了一种定位的方法:那就是通过索引。也就是官方文档里面说的 an integer representing the index 通过搜索网页中的,发现自己要定位的iframe标签位于众多iframe中的第一个,于是在代码中加入下面一句代码,程序终于正常工作了。 driver.switch_to.frame(0)
