1 PlayWright 定位方式
Playwright和Selenium的元素定位方法有相似之处,因为都是对相同的web页面元素进行定位所以差别不大区别在于它们的定位方,Selenium对每种选择器提供了对应的方法,而PlayWright只需要写定位表达式就可以了,不需要指定具体方法。
Playwright定位方式是:
page.locator("text=登录账户").click()
定位器locator通过传入的选择器selector参数进行元素定位,selector就是具体的定位表达式,不同的定位表达式代表不同的定位方式。
2 文本选择器
文本选择器:Text Selector
定位包含某些文本的元素,有下面两种方式:
-
page.locator("text=Log in") -
page.locator("text='Log in'")
1) text=Log in 和 text='Log in' 的区别:
Log in 没有加引号(单引号或者双引号):要求宽松:模糊匹配、对大小写不敏感
'Log in' 有引号 :要求严格:精确匹配、对大小写敏感
text=Log 匹配下面两种情况 :
<button>Log in</button>
<button>LOG in</button>
text='Log' 不匹配下面两种情况 :
<button>Log in</button>
<button>log</button>
2)空格处理
匹配时如果有多个空格,会将多个空格转化为一个空格,并且去掉头尾空格,比如:
text='Log in' 匹配:
<button> Log in </button>
3) 引号处理
当文本中本身就有引号(单、双)时,需要将引号进行转义,前面加上转义符:\
text=I 'Log' in 匹配:
<button>I 'Log' in</button>
4)value属性
Input元素 和 submit元素的value属性的值也会被text 选择器进行匹配:
text=Login 匹配:
<input type=button value="Login"/>
5)字符串
当只有一个字符串时,playwright会自动转化为文本匹配:
'"Log in"'会自动转化为 'text="Log in"' :
表示精确匹配、并且区分大小写,此种情况只有精确匹配,没有模糊匹配
注意:'"Log in"' 需要双重引号,也可写为"'Log in'"
6)文本选择器支持以 / 开头的JavaScript-like 正则表达式:
text=/Log\s*in/i 匹配:
<input>Login</input>
<input>LOG in</input>
/:表示为JavaScript-like 正则表达式
\s: 空格
:前面的字符出现0次或多次
/i:大小写不敏感
3 实战案例
案例页面访问方法,请咨询助教huice666
登录账户 元素定位方式 可以写为:
page.locator("text=登录账户").click()
因为"登录账户"在当前页面是唯一的,因此也可以写为:
page.locator("text='登录账户'").click()
或者直接写字符串:
page.locator('"登录账户"').click()

