Vue
Vue写的应用,页面上经常会有“伪元素”(有好几个几乎一模一样的页面元素,但是只有实际显示的那一个才是我们需要定位的),那么我们要如何定位我们需要的那一个元素呢?
定位非隐藏元素
1
| not(contains(@style,"display: none"))
|
定位包含字符串的元素
1
| contains(text(), "你想要定位的元素包含的文本")
|
取text()拿不到字符串的元素
1
| web_element.get_attribute('value')
|
元素文本包含乱七八糟换行符的元素
1
| web_element.get_attribute('textContent').strip().replace(' ','').replace('\n','')
|
Selenium疑难杂症FAQ
Invalid Session Id
有段时间我们在gitlab-ci上面的使用selenium chrome docker 镜像的流水线一直报Invalid Session Id错误。
日志中有一句
1
| unknown error: session deleted because of page crash
|
然后才明白是因为浏览器崩溃了,导致的invalid session
回想起selenium docker image文档里面提到要适当配置shm_size=2g,也就是共享内存大小,我怀疑是因为内存不足导致的程序崩溃。
解决方案
编辑config.toml配置
1
| vi /etc/gitlab-runner/config.toml
|
修改shm_size
1 2
| [runners.docker] shm_size = 2000000000
|
重启runner