使用Selenium的CSS模块?
我正在使用React/Redux和CSS模块开发一个web应用程序。对于单元测试,我用来模拟CSS导入 然而,QA团队想知道在使用Selenium时如何处理模糊的类名(我自己完全不熟悉)。我能找到的关于这两个词的唯一提及,但QA不清楚被接受的答案使用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
在这种情况下使用硒的一些解决方案是什么(最好是一个易于理解的答案,我可以带它去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的链接。