playwright实践之iframe操作

发布时间:2024年01月17日

?一定位到iframe有四种方法

1.page.frame_locator(selector)  #返回的是FrameLocator
2.page.frame() # 可以传递iframe的name属性值或者是id属性值,或者是url属性值
2.1如果iframe有name的属性值或者id的属性值可以如下面一样传递
page.frame(name=name的属性或者id的属性)
2.2如果iframe有url的属性值,可以如下面一样传递
page.frame(url=url的属性值)
2.3page.frame的返回的是Frame的对象,可以调用如下的方法和属性
Frame.name
Frame.url
Frame.evaluate()
Frame.content()
3.page.query_selector(selector).content_frame() #通过query_selector方式,定位到元素,转成frame 对象(不太常用)
4.page.locator(selector).frame_locator(selector) #通过page对象定位某个父元素,通过locator定位frame_locator(selector)

二.关于frame的属性

1.page.frames 获取page对象的全部iframe,包含page本身的frame对象
2.page.main_frame 获取page的main_frame (page对象本身也是一个frame对象)
3.frame.child_frames 获取frame下的全部子 frame 对象

三.page.frame_locator()可以用css的正则匹配元素属性

css的正则匹配

语法描述
$('[name^="value"]')匹配 name 以 value 开头的元素
$('[name$="end"]')匹配 name 以 end 结尾的元素
$('[class*="text"]')匹配class属性包含text的元素

四.获取所有文本内容的js代码

alltext = frameobj.evaluate('document.body.textContent') # frameobj是定位到的frame对象
alltext就是获取到的frame里面的所有文本内容,但是会有空格和换行,可以通过正则匹配去除掉。

# 以下函数可以把alltext里面的空格和换行替换掉
def remove_newline_space(alltext):
    pattern = r'\s*\n+\s*'
# alltext符合条件的内容替换成空字符,也可以替换成|或者其他的
    alltext_new = re.sub(pattern,'',alltext)  
    return alltext_new

文章来源:https://blog.csdn.net/suelai/article/details/135480910
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。