Обрезка текстовых значений для временного хранения в качестве переменной - PullRequest
1 голос
/ 17 июня 2019

Я хочу создать переменную на основе частичного текста из строки.Переменная будет использоваться в том же тесте. Spec

Элемент расположен следующим образом:

 .//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h4

Вывод:

"Ваша ссылка для бронирования: DBM039444."

Мне нужно получить DBM039444 или сгенерированное число.

Я пытался использовать старый тип Excel для Left () и Right (), но без особого успеха.

Пожалуйста, кто-нибудь может предложить правильный код

Ответы [ 3 ]

0 голосов
/ 17 июня 2019

Если вы заранее знаете, что это будет «DBM», за которым следует число, вы можете извлечь всю строку, а затем выполнить string.replace(/\D/g, ''); <-, которое вернет только число. </p>

0 голосов
/ 17 июня 2019

Это чрезвычайно негибкий селектор (.//*[@id='root']/div[2]/div/div[2]/div/section/div[1]/div[2]/div/h).Найдите этот тег более динамично, чтобы вам не приходилось исправлять это, если тестируемая страница когда-либо изменяется.Кроме того, следующее изменение даст вам альтернативный ответ.

Поскольку в вашем посте не упоминается, на каком языке программирования вы тестируете, я пишу этот ответ на C #:

using OpenQA.Selenium.Support.Extensions;
...
string javascriptCommand = @"
    var text = 'Your booking reference is:';
    var result = $(`h4:contains('${text}')`).text();
    return result.replace(text, '');
";
string referenceId = driver.ExecuteJavascript<string>(javascriptCommand).Trim();
0 голосов
/ 17 июня 2019

Вы можете использовать для этого разделение и делить строку при первом появлении «:», которое должно всегда предшествовать номеру ссылки бронирования

async / await

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)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...