Selenium 将临时存储的文本值修剪为变量

Selenium 将临时存储的文本值修剪为变量,selenium,protractor,Selenium,Protractor,我想基于字符串中的部分文本创建一个变量。该变量将在同一测试规范中使用 该元件的位置如下: .//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h4 输出为: “您的预订编号是:DBM039444。” 我需要检索DBM039444或生成的任何数字 我尝试过使用旧的Excel类型Left()和Right(),但没有太大成功 请任何人提供正确的代码您可以使用split进行此操作,并在第一次出现“:”时分割字符串,该字符串

我想基于字符串中的部分文本创建一个变量。该变量将在同一测试规范中使用

该元件的位置如下:

 .//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h4
输出为:

“您的预订编号是:DBM039444。”

我需要检索DBM039444或生成的任何数字

我尝试过使用旧的Excel类型Left()和Right(),但没有太大成功


请任何人提供正确的代码

您可以使用split进行此操作,并在第一次出现“:”时分割字符串,该字符串应始终紧跟在预订参考号之前

异步/等待

let eleText = await element(by.xpath(".//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h4")).getText();

//splits the string when it finds ": " which should occur only once
let bookingRef = eleText.split(": ")[1];
console.log(bookingRef)
控制流

element(by.xpath(".//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h4"))
    .getText().then(eleTxt => {
        let bookingRef = eleText.split(": ")[1];
        console.log(bookingRef)
})

您可以对此使用split,并在第一次出现“:”时分割字符串,该字符串应始终紧跟在预订参考号之前

异步/等待

let eleText = await element(by.xpath(".//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h4")).getText();

//splits the string when it finds ": " which should occur only once
let bookingRef = eleText.split(": ")[1];
console.log(bookingRef)
控制流

element(by.xpath(".//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h4"))
    .getText().then(eleTxt => {
        let bookingRef = eleText.split(": ")[1];
        console.log(bookingRef)
})

如果您事先知道它将是“DBM”,后跟一个数字,则可以检索整个字符串,然后执行
string.replace(/\D/g')如果您事先知道它将是“DBM”后跟一个数字,则可以检索整个字符串,然后执行
字符串替换(/\D/g')
这是一个非常不灵活的选择器(
/*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h
)。更动态地查找此标记,以便在被测页面发生更改时不必修复此标记。此外,以下更改将为您提供另一个答案

因为你的帖子没有提到你的测试用的是哪种编程语言,所以我用C#写下这个答案:

使用OpenQA.Selenium.Support.Extensions;
...
字符串javascriptCommand=@”
var text='您的预订参考是:';
var result=$(`h4:contains('${text}')`);
返回结果。替换(文本“”);
";
string referenceId=driver.ExecuteJavascript(javascriptCommand.Trim();

这是一个非常不灵活的选择器(
//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h
)。更动态地查找此标记,以便在被测页面发生更改时不必修复此标记。此外,以下更改将为您提供另一个答案

因为你的帖子没有提到你的测试用的是哪种编程语言,所以我用C#写下这个答案:

使用OpenQA.Selenium.Support.Extensions;
...
字符串javascriptCommand=@”
var text='您的预订参考是:';
var result=$(`h4:contains('${text}')`);
返回结果。替换(文本“”);
";
string referenceId=driver.ExecuteJavascript(javascriptCommand.Trim();
谢谢-我们使用JScript(很抱歉没有提及),但我认为我可以“翻译”。选择器纯粹是示例性的-我们倾向于尽可能使用PageObjects。谢谢-我们使用JScript(很抱歉没有提及),但我认为我可以“翻译”。选择器纯粹是示例性的,我们倾向于尽可能使用PageObjects。