网页中,SVG无法像普通元素一样用XPATH定位,需要使用特殊的方式来进行定位,例如对于下面的布局:
- <div class="a" id="alert-dialog-title">
-  <h2 class="b">
-   <svg class="c" viewBox="0 0 24 24">
-    <path d="M19 19H5V5h14v14zM3 3v18h18V3H3zm14 12.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"></path>
-   </svg>
-   <div class="d">Hello world</div>
-  </h2>
- </div>
是无法通过 //*[@id="alert-dialog-title"]/h2/svg 来进行定位的。
如果要用xpath定位,必须使用下面的方法:
//*[@id="alert-dialog-title"]/h2/*[name="svg"]
同时,SVG 对象,不太支持 click() 方法,如果要模拟点击,必须使用 dispatchEvent 来实现,完整代码如下:
- document.evaluate('//*[@id="alert-dialog-title"]/h2/*[name()="svg"]', document)
-     .iterateNext()
-     .dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}))