使用Selenium的CSS模块?

使用Selenium的CSS模块?,selenium,selenium-webdriver,integration-testing,css-modules,react-css-modules,Selenium,Selenium Webdriver,Integration Testing,Css Modules,React Css Modules,我正在使用React/Redux和CSS模块开发一个web应用程序。对于单元测试,我用来模拟CSS导入 然而,QA团队想知道在使用Selenium时如何处理模糊的类名(我自己完全不熟悉)。我能找到的关于这两个词的唯一提及,但QA不清楚被接受的答案 在这种情况下使用硒的一些解决方案是什么(最好是一个易于理解的答案,我可以带它去QA团队)?有多种方法来处理这一问题 最后,我关闭了我们开发环境的webpack配置中的CSS哈希(通过提供的localIdentName选项) 例如,localIdentN

我正在使用React/Redux和CSS模块开发一个web应用程序。对于单元测试,我用来模拟CSS导入

然而,QA团队想知道在使用Selenium时如何处理模糊的类名(我自己完全不熟悉)。我能找到的关于这两个词的唯一提及,但QA不清楚被接受的答案


在这种情况下使用硒的一些解决方案是什么(最好是一个易于理解的答案,我可以带它去QA团队)?

有多种方法来处理这一问题

最后,我关闭了我们开发环境的webpack配置中的CSS哈希(通过提供的
localIdentName
选项)


例如,
localIdentName=[name]\uuuu[local]
而不是默认的
localIdentName=[hash:base64]

我认为在BDD测试中使用CSS选择器更好,因为我们可以保持与生产相同的网页配置。与使用Xpath相比,使用CSS选择器非常容易

下面是一个例子:

const {By} = require('selenium-webdriver');

// Use `contains` wild card to match, and put it in function to reuse.
const hashedClassName = (className) => By.css('[class*=\'' + className + '\']');

// skip other setting .....

describe('Foo Page', function() {
  it('There should be a bar component', function() {
    return new Promise((resolve, reject) => {
      browser
        .get(serverUri + 'foo')
        .catch(err => reject(err));

      // I assume the webpack will use something like below:
      // localIdentName: '[name]__[local]--[hash:base64:5]'
      browser
        .findElement(hashedClassName('Foo__bar'))
        .then(elem => resolve())
        .catch(err => reject(err));
    });
  });
});
另外,演示使用的是nodejs,我想Python也有类似的功能。

我创建了webpack插件。它允许创建JSON文件,并在原始类名和模糊类名之间进行映射。因此,您可以不在HTML中添加带有localIdentName的长类名,请阅读。请提供您尝试过的代码和执行结果,包括任何错误消息等。同时提供指向页面和/或相关HTML的链接。