playwright实践之iframe操作

 一定位到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

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值