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

标签 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”。

最佳答案

可能该元素尚未完全加载。我会尝试这个:

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/

相关文章:

java - Hortonworks HDFS 名称节点在启动时出现 tryLock 问题

java - 获取相关 ID 为 92 的元数据时出错 : {myTest=UNKNOWN_TOPIC_OR_PARTITION}

java - 如何使用占位符在 Bootstrap 模型中显示的文本框中设置值

python - Chrome 使用 selenium chromedriver 以 “Data;” 打开

java - 如何将 ant 参数传递给 junit/selenium 测试?

javascript - PhantomJS 运行 JS 的 HTML 页面结果中如何获取嵌入的 JSON 对象并将其传递给 java 代码?

java - 转换时间戳字符串时出现无法解析的日期异常

包中带有 init() 的 Java 小程序?

php - 如何解决错误 QXcbConnection : Could not connect to display when using exec function for phantomJs using PHP

javascript - Headless Chrome ( Puppeteer ) - 如何访问文档 Node 元素?