我使用 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”。
最佳答案
可能该元素尚未完全加载。我会尝试这个:
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);
}
关于java - 为什么当我们向输入字段输入内容时,PhantomJS 只输入最后一个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35864230/