2016-03-08 107 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

相關問題