当我们输入输入字段时,为什么PhantomJS只输入最后一个字母?

时间:2016-03-08 09:59:10

标签: java selenium-webdriver phantomjs

我使用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"代替。

2 个答案:

答案 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驱动程序时,发送密钥方法已采用全文而不会丢失任何字母。