无法模拟已经存在的电子邮件功能-Selenium

时间:2018-08-30 10:37:57

标签: c# selenium selenium-webdriver

我有一个条件,我要从文本字段转到另一个字段,因为我希望在执行此步骤时调用一个函数。为了更加清晰,我将添加一些图像。

enter image description here

UI:

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 :(得分:0)

尝试单击不带硒的“电话号码”字段,并检查是否出现弹出窗口,是否单击带硒的按钮。

点击次数:

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

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

发送键:

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

还尝试将Tab键发送到电子邮件输入的父div元素:

driver.FindElement(By.XPath("//input[@type='email']/ancestor::div[1]")).SendKeys(Keys.Tab);

答案 1 :(得分:0)

据我了解,您可以将控件从电子邮件文本字段移到“电话号码”字段,但是gif中显示的预期行为不适用于硒。

gif浏览器中的gif似乎是chrome,您是否也尝试在带有硒的Chrome上执行? 您还与此同时使用任何浏览器配置文件或浏览器选项吗?

我怀疑个人资料或浏览器选项中可能都声明了一个选项,以避免不必要的警报/弹出窗口,因此chrome调用的浏览器会强行杀死弹出窗口。

在这种情况下,您可以尝试与此类似的操作,以允许硒调用的浏览器弹出窗口

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);