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);