我使用Selenium WebDriver和PhantomJS作为我的浏览器和Windows7操作系统。
我的代码如下所示。
public void TC_PMS_015() throws Exception{
driver.switchTo().defaultContent();
driver.switchTo().frame(0);
homePg.clickFrontOffice();
driver.switchTo().defaultContent();
driver.switchTo().frame("main");
FOManageReservationPg = homePg.clickFOManageReservation();
driver.switchTo().defaultContent();
driver.switchTo().frame("main");
driver.switchTo().frame("frmTabmenu_spnTabMenus_0");
Sleep(6);
FOManageReservationPg.clickClearButton();
Sleep(3);
FOManageReservationPg.selectHotel(prop.getProperty("hotel"));
Sleep(3);
FOManageReservationPg.enterVoucherNumberToSearch(prop.getProperty("vouchernumber"));
Sleep(3);
FOManageReservationPg.clickSearchButton();
Sleep(6);
homePg = FOManageReservationPg.clickCloseButton();
}
这是输入优惠券号码的方法。
public void enterVoucherNumberToSearch(String VoucherNo) {
txtVoucherNo = driver.findElement(By.xpath("//input[@id='txtVoucherNo']"));
uiSendKeys(txtVoucherNo, VoucherNo);
}
这是uiSendKeys方法。
public void uiSendKeys(WebElement uiElement,String value) {
uiElement.clear();
uiElement.sendKeys(value);
}
当我执行此测试用例时," enterVoucherNumberToSearch"方法只接受凭证的最后一个字母。
例如:我通过" RH0000337"作为我的优惠券号码,但它类型" 7"代替。
答案 0 :(得分:1)
也许该元素尚未完全加载。我会试试这个:
public void enterVoucherNumberToSearch(String VoucherNo) {
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='txtVoucherNo']")));
txtVoucherNo = driver.findElement(By.xpath("//input[@id='txtVoucherNo']"));
uiSendKeys(txtVoucherNo, VoucherNo);
}
<强>更新强>
继续,我将尝试的下一个改变是:
public void uiSendKeys(WebElement uiElement,String value) {
uiElement.clear();
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.textToBePresentInElement(uiElement, '');
uiElement.sendKeys(value);
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.textToBePresentInElement(uiElement, value);
}
答案 1 :(得分:1)
PhantomJs版本会发生这种情况。 我以前的PhantomJs版本是1.9.1 我已将我的版本更新为2.0.0 当我更新我的PhantomJs驱动程序时,发送密钥方法已采用全文而不会丢失任何字母。