0

我目前正試圖在Web門戶中的某個功能上運行多個測試用例,但autosuggest字段第一次工作,但不能再次工作。我留下證據。如何使用硒多次填充自動提示字段

感謝您的幫助。

網址爲https://www.bancodeoccidente.com.co/solicitarcredito/#/simuladorLibranza

它的工作原理 enter image description here

第二次不工作的第一次,建議名單不火 enter image description here

這是我的類常量:

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.remote.DesiredCapabilities; 

public class Constants { 

    public static String URL_TARGET = "https://www.bancodeoccidente.com.co/solicitarcredito/"; 

    public static String LIBRANZA_SIMULATOR_LINK_XPATH = "//*[@id=\"simulador\"]/div/div/div/ul/li[4]/a/div/span"; 
    public static String LIBRANZA_SIMULATOR_BUSINESS_NAME_ID = "nombreEmpresaSimulador"; 
    public static String LIBRANZA_SIMULATOR_BUSINESS_NAME_XPATH = "//*[@id=\"nombreEmpresaSimulador\"]";  
    public static String LIBRANZA_SIMULATOR_BUSINESS_UTOSUGGEST_OPTION_XPATH = "//*[@id=\"simulador\"]/div/div/article/div/div/div/div/form/div[2]/div/div/div/ul/li[1]/a"; 
    public static String LIBRANZA_SIMULATOR_AMOUNT_XPATH = "//*[@id=\"simulador\"]/div/div/article/div/div/div/div/form/div[3]/div[1]/div/span/input"; 
    public static String LIBRANZA_CREDIT_TERM_LIST_XPATH = "//*[@id=\"simulador\"]/div/div/article/div/div/div/div/form/div[3]/div[2]/select"; 
    public static String LIBRANZA_INSURANCE_TOGGLE_XPATH = "//*[@id=\"simulador\"]/div/div/article/div/div/div/div/form/div[6]/div[2]/div/div[1]/div/label"; 
    public static String LIBRANZA_SIMULATION_RESULT_XPATH = "//*[@id=\"resultado\"]/b"; 

    public static WebDriver getChromeWebDriver() 
    { 
     System.setProperty(
       "webdriver.chrome.driver", 
       "files/chromedriver.exe" 
       ); 

     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("window-size=1280,720"); 
     DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
     capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
     WebDriver driver = new ChromeDriver(capabilities); 

     return driver; 
    } 

} 

這是我的c小姑娘LibranzaSimulatorTest:

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.Keys; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.Select; 
import org.openqa.selenium.support.ui.WebDriverWait; 

import Util.Constants; 

public class LibranzaSimulatorTest { 

    private List<String> testCases; 
    private WebDriver chrome; 
    private WebElement accessLink; 
    private WebElement businessNameField; 
    private WebElement businessNameAutosuggestOption; 
    private WebElement amountField; 
    private Select creditTerm; 
    private WebElement insuranceToggle; 
    private WebElement simulationResult; 

    public LibranzaSimulatorTest() 
    { 
     testCases = new ArrayList();     
    } 

    public void runTest() 
    { 
     testCases.add("CP001;A LAUMAYER Y CIA EXPORTADORES DE CAFÉ S.A.;$ 57.499.000;96;SI;$ 1.245.412"); 
     testCases.add("CP002;A TODA HORA S.A. (ATH);$ 156.000.000;96;No;$ 3.113.142"); 
     initializeComponents(); 
     for (Iterator iterator = testCases.iterator(); iterator.hasNext();) { 
      String string = (String) iterator.next(); 
      String[] testCase = string.split(";"); 
      businessNameField.click(); 
      businessNameField.clear();   
      businessNameField.sendKeys(testCase[1].toLowerCase(), Keys.ENTER); 
      WebDriverWait wait = new WebDriverWait(chrome, 30); 
      businessNameAutosuggestOption = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(Constants.LIBRANZA_SIMULATOR_BUSINESS_UTOSUGGEST_OPTION_XPATH))); 
      businessNameAutosuggestOption.click(); 
      amountField.sendKeys(testCase[2]); 
      creditTerm.selectByVisibleText(testCase[3]+" Meses"); 
      insuranceToggle.click(); 
      String result = simulationResult.getText(); 
      System.out.println("resultado: "+result); 
     } 
    } 

    private void initializeComponents() 
    { 
     chrome = Constants.getChromeWebDriver(); 
     chrome.get(Constants.URL_TARGET); 
     chrome.manage().window().maximize(); 
     WebDriverWait wait = new WebDriverWait(chrome, 30); 
     accessLink = chrome.findElement(By.xpath(Constants.LIBRANZA_SIMULATOR_LINK_XPATH)); 
     accessLink.click();  
     businessNameField = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(Constants.LIBRANZA_SIMULATOR_BUSINESS_NAME_XPATH))); 
     amountField = chrome.findElement(By.xpath(Constants.LIBRANZA_SIMULATOR_AMOUNT_XPATH)); 
     creditTerm = new Select(chrome.findElement(By.xpath(Constants.LIBRANZA_CREDIT_TERM_LIST_XPATH))); 
     insuranceToggle = chrome.findElement(By.xpath(Constants.LIBRANZA_INSURANCE_TOGGLE_XPATH)); 
     simulationResult = chrome.findElement(By.xpath(Constants.LIBRANZA_SIMULATION_RESULT_XPATH)); 
    } 

    public List<String> getTestCases() { 
     return testCases; 
    } 

    public void setTestCases(List<String> testCases) { 
     this.testCases = testCases; 
    } 

} 
+0

爲什麼你定義的XPath這樣的:'// * [@ ID = \「simulador \」]/DIV/div/article/div/div/div/div/form/div [2]/div/div/div/ul/li [1]/a'。使用正確的格式來定義它。在你的情況下,UI中的任何小改變都將失敗,找到xpath。 –

+0

嗨,彼得。我從chrome開發者工具中獲得了xpath,但是如果你有最好的方法,請告訴我。謝謝。 – Raul

+0

因此,而不是使用'//* [@ id = \「simulador \」]/div/div/article/div/div/div/div/form/div [2]/div/div/div/ul/li [1]/a'你可以嘗試'* //輸入[@id = \''nombreEmpresaSimulador \「] // parent :: span // following-sibling :: div/ul/li [1]/a' –

回答

0

我找到了使用FluentWait的解決方案。

Wait<WebDriver> wait = new FluentWait<>(chrome) 
        .withTimeout(10, TimeUnit.SECONDS) 
        .pollingEvery(200, TimeUnit.MILLISECONDS); 

      wait.until(
        new com.google.common.base.Function<WebDriver, Boolean>() { 
         @Override 
         public Boolean apply(WebDriver driver) { 
          try{ 
           businessNameAutosuggestOption = driver.findElement(By.xpath(Constants.LIBRANZA_SIMULATOR_BUSINESS_UTOSUGGEST_OPTION_XPATH)); 
          }catch (NoSuchElementException e) { 
           businessNameField.sendKeys(Keys.ENTER); 
           return false; 
          } 
          return true; 
          } 
         }); 

如果選項列表不顯示,再發送一個回車鍵,直到列表顯示

0

嘗試一次以下溶液:

driver.findElement(By.id( 「nombreEmpresaSimulador」))的SendKeys( 「G SERVICIOS Integrales公司LTDA」);。

 Robot robot=new Robot(); 
     robot.keyPress(KeyEvent.VK_TAB); 
     robot.keyRelease(KeyEvent.VK_TAB); 

     robot.keyPress(KeyEvent.VK_ENTER); 
     robot.keyRelease(KeyEvent.VK_ENTER); 
相關問題