提问人:Oreliya Fernando 提问时间:3/8/2016 最后编辑:Artjom B.Oreliya Fernando 更新时间:3/16/2016 访问量:77
为什么 PhantomJS 在输入字段输入时只输入最后一个字母?
Why PhantomJS type only the last letter when we give an input to input field?
问:
我使用 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”。
答:
1赞
MikeJRamsey56
3/10/2016
#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);
}
评论
0赞
Oreliya Fernando
3/10/2016
我在enterVoucherNumberToSearch方法中添加了等待,但它没有解决我的问题。我打印了 xpath 并得到了以下输出。从 xpath ----- > 设置后的凭证 nuber [[PhantomJSDriver: phantomjs on XP (d3630600-e681-11e5-80bf-41e6ba53f1fa)] -> xpath://input[@id='txtVoucherNo']]
0赞
MikeJRamsey56
3/11/2016
@OreliyaFernando我刚刚注意到了一些事情。
0赞
MikeJRamsey56
3/11/2016
@OreliyaFernando 隐式等待设置是什么?也许它需要设置得更高。driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
1赞
Oreliya Fernando
3/16/2016
#2
这发生在 PhantomJs 版本中。 我之前的 PhantomJs 版本是 1.9.1 我已将我的版本更新到 2.0.0 当我更新我的 PhantomJs 驱动程序时,发送密钥方法已获取全文,没有遗漏任何字母。
评论