транспортир угловой 5 выбор кнопки не работает последовательно - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь использовать транспортир с углом 5 для выбора переключателя, связанного с методами оплаты клиента, однако выбор переключателя не стабилен после его проверки и десять раз - нет.код для нажатия кнопки-переключателя при оформлении заказа через Интернет:

 browser.driver.findElement(by.xpath("//input[@name='paymentMethod' and @type='radio' and @id='874904645420181210']"));
 browser.driver.actions().mouseMove(element(by.xpath("//input[@name='paymentMethod' and @type='radio' and @id='874904645420181210']"))).perform();
 var e = element(by.xpath("//input[@name='paymentMethod' and @type='radio' and @id='874904645420181210']"));
 browser.wait(EC.presenceOf(e), 10000);
 element.all(by.xpath("//input[@name='paymentMethod' and @type='radio'")).then( async function(elm){
 await browser.waitForAngular();
 await browser.sleep(180000);
 await elm[0].click();
 await e.click();
 await browser.waitForAngular();
 await browser.sleep(180000);

1 Ответ

0 голосов
/ 30 января 2019

Когда вы вызываете browser.driver.findElement, он находит элемент, не дожидаясь угловой стабильности.По сути, вы звоните клиенту selenium-webdriver напрямую, и ваши результаты могут отличаться.

Я бы не использовал явные спящие режимы и вызовы waitForAngular.Также подумайте о том, чтобы не использовать xpath для идентификации ваших веб-элементов.Это может привести к трудностям при поддержании тестов.

// Nit: Prefer not to use xpath because these can be brittle.
// Reference http://www.protractortest.org/#/style-guide
const paymentMethod = element(by.xpath("//input[@name='paymentMethod' and @type='radio' and @id='874904645420181210']"));

// We should wait to see if the element is present before doing anything.
// This should also wait for angular stability with waitForAngular
browser.wait(EC.presenceOf(paymentMethod), 10000);

Различные способы нажатия ...

С помощью API действий selenium-webdriver

Внимание: вы можете столкнуться с проблемамиздесь, поскольку API действий W3C находится в постоянном взаимодействии с поставщиками драйверов браузера и клиентом Selen-Webdriver.

// browser.driver.actions() mouseMove takes a WebElement object.
// So just moving the mouse does not click. You might want to click on it?
// Also assuming that this is the radio button
const paymentMethodWebEl = await paymentMethod.getWebElement();
await browser.driver.actions().mouseMove(paymentMethodWebEl).click().perform();

Элемент ElementFinder для транспортира

Довольно стандартный щелчок.

await paymentMethod.click();

Protractor's ElementArrayFinder: получение индекса и нажатие.

// This might be the same step as above to click on a payment radio button
const paymentMethods = element.all(by.xpath("//input[@name='paymentMethod' and @type='radio'"));
// http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.get
await paymentMethods.get(0).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...