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。