# Selenium 定位失败解决办法

By [monsoonw](https://paragraph.com/@monsoonw) · 2022-05-24

---

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

![](https://storage.googleapis.com/papyrus_images/08cb76c7cd67233002933a390acc1e3e7eae143249082492914252b4149fa941.png)

通过google了解到。出现这样的错误是因为页面里面需要定位的元素包含在iframe标签之内。

[https://blog.51cto.com/huny/3267181](https://blog.51cto.com/huny/3267181)

如果页面中包含了iframe标签，定位前首先需要切换到此iframe,然后再进行定位。用到的代码也很简单：

    driver = webdriver.Chrome()
    driver.switch_to_frame("name值")
    

回到自己的问题，经过查找，代码中的确包含iframe标签，不过又遇到一个问题，那就是自己的这个iframe标签里面并不包含“name”和“ID”。而且网页中不止一处iframe标签。

![](https://storage.googleapis.com/papyrus_images/a5c58554e1e810c82e4b59f583e5f4e02a777e9cbf0ee3446845ae275705056d.png)

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

---

*Originally published on [monsoonw](https://paragraph.com/@monsoonw/selenium)*
