今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误。经过自己反复调试,找原因百度,终于解决了。简单总结一下吧,原因有以下几点:
一:Frame控件嵌套,.Frame/Iframe原因定位不到元素:
一般大家经常使用的邮箱算是frame嵌套的典型,通常注册登录都是在一个frame控件里面,而且标题正文可能是frame中嵌套iframe,接下里用我今天的脚本为例子(qq邮箱)
可以看到,如果我们要想找到收件人,标题就要先进到第一个Frame控件中,否则就会报错,但如果还要找到正文元素,就要进入第二个ifame控件中
可以使用 self.driver.switch_to.frame(传入id或者xpath值)方法进入Frame控件中。注(原来driver.switch_to_frame()这个方法在webdriver3.0中已经不支持了)
值得注意的一点的是:如果我此时我要点击发送按钮就需要先退出iframe控件,因为此时发送并不在正文所在的iframe控件当中,因此,无论你怎么定位,也定位不到。
此时就需要用到switch_to.default_content()这个方法。这个方法是无论你在哪一层级的frame控件中,只要调用此方法都会返回原
python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)...
最新推荐文章于 2024-06-14 15:42:54 发布
在使用Python的selenium库进行网页自动化测试时,遇到selenium.common.exceptions.NoSuchElementException异常。问题源于Frame和Iframe的嵌套。通过深入理解HTML结构,使用switch_to.frame和switch_to.default_content方法正确切换上下文,成功定位并解决元素找不到的问题。
摘要由CSDN通过智能技术生成