Не может эмулировать уже существующую функцию электронной почты - Selenium - PullRequest
0 голосов
/ 30 августа 2018

У меня есть условие, когда я хочу перейти из текстового поля в другое, потому что я хочу, чтобы функция вызывалась, когда я делаю этот шаг. Для большей ясности добавлю несколько изображений.

enter image description here

Пользовательский интерфейс:

enter image description here

Gif:

enter image description here HTML:

<div class="col-xs-12 no-padding-sides input-container">
   <label class="col-xs-4 no-padding-sides">Email Address </label>
   <input type="email" class="col-xs-8 custom-input-styles" formControlName="email" (blur)="checkIfExists()"
      autocomplete="off">
   <span *ngIf="step2Form.get('email').invalid && (step2Form.get('email').dirty || step2Form.get('email').touched)"
      class="col-xs-7 col-xs-offset-4 no-padding-sides  slideDown">
   <span *ngIf="step2Form.get('email').errors.required" class=" form-error slideDown">
   Invalid Email
   </span>
   <span *ngIf="step2Form.get('email').errors.emailExists" class="form-error slideDown">
  Email already exist
   </span>

   </span>
</div>

это то, что я хочу подражать

(blur)="checkIfExist()" 

Метод, который я попробовал:

 driver.FindElement(By.XPath("(.//*[normalize-space(text()) and normalize-space(.)='Email Address'])[1]/following::input[1]")).SendKeys(Keys.Tab);

Я хочу, чтобы этот символ перешел в текстовое поле номера телефона, потому что, как я уже сказал, когда это произойдет, появится всплывающее сообщение и сообщит мне, что это письмо уже существует

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Насколько я понимаю, вы можете переместить элемент управления из текстового поля электронной почты в поле номера телефона, но ожидаемое поведение, как показано в gif, не работает с селеном.

Похоже, что браузер в gif chrome, вы также пытаетесь запустить в Chrome с селеном? А также вы работаете с любым профилем браузера или опциями браузера с этим?

Я подозреваю, что в настройках профиля или браузера может быть объявлена ​​опция, позволяющая избежать нежелательных предупреждений / всплывающих окон, поэтому браузер, вызываемый Chrome, принудительно убивает всплывающее окно.

Если это так, вы можете попробовать что-то похожее на это, чтобы разрешить всплывающие окна в браузере, вызванные selenium

ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
options.addArguments("disable-popup-blocking");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(capabilities);
0 голосов
/ 30 августа 2018

Попробуйте щелкнуть в поле «Номер телефона» без селена и проверить, появляется ли всплывающее окно, если щелкает с помощью Selenuim.

Колличество:

driver.FindElement(phone number input locator).click();

Actions actionProvider = new Actions(driver);
actionProvider.DoubleClick(driver.FindElement(phone number input locator));

SendKeys:

driver.FindElement(By.XPath("//input[@type='email']")).SendKeys(Keys.Enter);
driver.FindElement(phone number input locator).SendKeys(Keys.Enter);
driver.FindElement(By.XPath("//input[@type='email']")).SendKeys(Keys.Escape);

Изменить фокус на другой элемент с помощью Javascript:

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].focus()", phoneNumberElement); //or to any button

Также попробуйте отправить клавишу табуляции на родительский элемент div ввода электронной почты:

driver.FindElement(By.XPath("//input[@type='email']/ancestor::div[1]")).SendKeys(Keys.Tab);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...