使用 Node/Nightwatch 自动点击图像映射 actions/links

Automating click to image-mapped actions/links using Node/Nightwatch

如何使用 NightwatchJs 自动点击图像的特定部分?我天真的做法是 select 与我想要触发的图像的特定区域相匹配的坐标属性;但它不起作用。

<img src="..." usemap="#example">
<map name="example" id="example">
    <area shape="rect" coords="336,10,401,32" href="...">
    <area shape="rect" coords="25,171,97,198" href="...">
    ...
</map>

有人遇到过这个问题或知道解决方法吗?谢谢!

如果我是你,我会使用 CSS 选择器来处理 map 元素内 area 元素的 position,例如 :first-child:first-of-type。这是一个最小的工作示例:

PNG (map.png)

HTML/JS (index.html)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Nightwatch</title>
</head>
<body>
  <img src="map.png" usemap="#map">
  <map name="map">
    <area shape="circle" coords="51,51,29">
  </map>
  <script>
    // When the red area is clicked, we should display an alert.
    var area = document.querySelector('area');
    area.addEventListener('click', function () {
      alert('OK');
    }, false);
  </script>
</body>
</html>

守夜人 (script.js)

module.exports = {
  'Clickable image map': function (browser) {
    browser
      .url('http://localhost:8000/index.html')
      .waitForElementPresent('map', 1000)
      .click('map > area:first-child');
      // ...
  },
};

命令

如果您的环境设置正确,您可以 运行 使用 nightwatch -t tests/script.js 脚本。您将看到警报,这意味着红色区域已被 Nightwatch 单击。