好了, 此处看了iframe标签了。我们如何来定位呢。上述图片中有id,有name属性,所以我们正常进行定位切换就好了。
此处是一个小例子,我们使用switch_to.frame()可以切入到标签内部,然后进行各种操作。实际上可能会遇见没有任何属性的iframe,所以这时候就要考虑到标签定位了。这里回到了元素定位基础了,就不作多的阐述了。
往后还可能遇到一个HTML中存在多个iframe标签的情况,善于结合Python,Selenium基础来书写代码。原理都是一样的。
那么切入进去之后如何切出呢,或者还有其他的办法切入吗。 答案是有的。看封装好的一个小例子。这里就不解释如何封装的了,可以直接看看Python系列,有讲。
此处举例了如何切出iframe,也就是parent_frame方法,里面介绍了两种方法。
self.fox.switch_to.parent_frame()是切换到父级,如果没有父级的iframe,那么保持默认,也就是说将焦点切出原iframe标签。
self.fox.switch_to.default_content()会直接将焦点切出iframe标签。
切出后我们就可以做其他的操作了。上述代码中,我们定位了“空间活动”,并打印了它的文本值。
上述代码中我们还用到了一个显示等待,也是有关iframe标签的,这也是一种切换方式。一起来看看源码:
看源码中,简单点理解:如果self.frame_locator是元组,则进行切换,否则,还是切换,并返回True。都不对,则告诉你错误,返回False。所以啊,用了这个显示等待也就不需要另外写iframe标签切换了。也能不加强制等待、担心时间不够元素没渲染出来,导致脚本报错了。