如何编写Testcafe selector('Withoutvalue').withText('Valid Text')?



我面临的场景是,元素标记名称和属性从env更改为env,但仅文本内容是唯一的。

因此,我无法为Selector定义任何值("此处无法定义任何内容"(。

如何编写路径来定位元素?

我看不到这方面的直接解决方案,但有一个解决方案可以解决您的问题。您可以有一个对象,它为您保存特定于环境的数据,并在您似乎遇到的特定情况下为您提供帮助。在此对象中,您还可以存储特定于环境的Selector。这可以用TypeScript编写,看起来如下:

import { Selector } from "testcafe";
interface EnvironmentData {
envName: string;
myVariableSelector: Selector;
}
// Set up a list that contains environment specific data objects
const CONFIGS: EnvironmentData[] = [
{
envName: "MyEnv1",
myVariableSelector: Selector("my css selector 1").withText("my text 1")
},
{
envName: "MyEnv2",
myVariableSelector: Selector("my css selector 2").withText("my text 2")
},
{
envName: "MyEnv3",
myVariableSelector: Selector("my css selector 3").withText("my text 3")
}
]
// Assuming that you're CI for instance sets a environment variable ENVIRONMENT_NAME to 
// any of the specific environments MyEnv1, MyEnv2 or MyEnv3
function getConfigForEnvironment(envDataSets: EnvironmentData[]): EnvironmentData {
const envData = envDataSets.find((c) => c.envName === process.env.ENVIRONMENT_NAME);
if (envData === undefined) {
console.error(`No suitable data for environment '${process.env.ENVIRONMENT_NAME}' found!`);
process.exit(1);
}
return envData;
}
// Determine the right object before the tests start
const envData = getConfigForEnvironment(CONFIGS);
fixture`My awesome tests`.page("myTestUrl");
test("My test", async (t) => {
// Make use of the object that holds the data for the desired environment
await t.expect(envData.myVariableSelector.exists).ok("Should be fine for any environment!");
});

我使用or运算符(,(以更简单的方式完成

i、 e我用selector('div,span'(编写选择器。用Text('Value'(

属性div和span随着环境的变化而变化,所以我使用了,来传递这两个属性,它起作用了。

相关内容

最新更新