2016-03-08 108 views
2

我使用Selenium WebDriver和PhantomJS作为我的浏览器和Windows7操作系统。为什么PhantomJS仅在输入字段时输入最后一个字母?

我的代码如下所示。

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

出现这种情况与PhantomJs版本。 我以前的PhantomJs版本是1.9.1 我有更新我的版本到2.0.0 当我更新我的PhantomJs驱动程序时,发送键方法采取了全文没有丢失任何字母。

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

我将等待添加到enterVoucherNumberToSearch方法,但它没有解决我的问题。我打印xpath并获得以下输出。从xpath中设置凭证nuber ----- [[PhantomJSDriver:phantomjs on XP(d3630600-e681-11e5-80bf-41e6ba53f1fa)] - > xpath:// input [@ id ='txtVoucherNo']] –

+0

@ OreliyaFernando我刚刚注意到了一些事情。 – MikeJRamsey56

+0

@OreliyaFernando你隐含的等待是什么?也许它需要设置得更高。 driver.manage()。timeouts()。implicitlyWait(60,TimeUnit.SECONDS); – MikeJRamsey56

相关问题