mercredi 7 août 2019

Unable to select value from dynamic type in search box

I have a dynamic search box for a medication list. The list of medications will appear based on first 3 letters user entered: I have xpath for the box: //input[@placeholder='Search for a medication...']" But I could not locate medication list, since it's dynamic. I tried many different things and non of them are working. Please see the list below. Any suggestions are appreciated, thank you!

1st try

     public void medSearch(String value) throws Throwable{
          By medSearch = By.xpath("//input[@placeholder='Search for a medication...']");
         // String medSearch = "TETTERINE, Topical Ointment";
          if(waitForPresenceOfElement(medSearch, 20)){
                type(medSearch,value);
                moveToElementAndClick(medSearch);

            }
     }
2nd try
     public void select_med()throws Throwable {
         WebElement medSearch2 = Driver.findElement(By.xpath("//*[normalize-space(text()) and normalize-space(.)='View More Info'])[1]/following::input[1] "));
          //if(waitForPresenceOfElement(medSearch2, 20)){
              Select dropdown = new Select(medSearch2);
              dropdown.selectByVisibleText("TETTERINE, Topical Ointment");
            // dropdown.selectByValue("");

     } 
3rd try
     public  void med4()throws Throwable {

         WebElement listbox = Driver.findElement(By.xpath("//input[@placeholder='Search for a medication...']"));
         listbox.sendKeys("tett");
         listbox.sendKeys(Keys.PAUSE);
         listbox.sendKeys(Keys.DOWN);
         listbox.sendKeys(Keys.ENTER);

     }
4th try:
/* public void medSearch3(String value) throws Throwable{
         WebElement listbox = Driver.findElement(By.xpath("//input[@placeholder='Search for a medication...']"));
         WebElementWait wait = new WebElementWait(listbox, 1);
            if(waitForPresenceOfElement(listbox, 20)){
                type(value);
                listbox.sendKeys(Keys.DOWN, Keys.RETURN);
            }
    } */
5th try
 public void selectMedication (String first_3_letters, String text) throws Throwable {
         //String text2 = null;
         By medication_box = By.xpath("//input[@placeholder='Search for a medication...']");
         if(waitForElementPresent(medication_box, 20)) {
             selectBySendkeys(medication_box,first_3_letters, text);
                //moveToElementAndClick();

         emanager.Pass("Enter value in ':' text field", "Entered  in  field");
     } else {
         emanager.Failure("Enter value in ':'", "Unable to enter in  field", Driver);
     }
         if(waitForElementPresent(medication_box, 20)) {
             selectBySendkeys(medication_box,first_3_letters, text);
                //moveToElementAndClick();
6th try:
     public void selectmed() {
            WebElement medSearch = Driver.findElement(By.xpath("//input[@placeholder='Search for a medication...']"));
            Select dropdownXpath = new Select(medSearch);
            List<WebElement>dropdown_list = dropdownXpath.getOptions();
            int total_rx = dropdown_list.size();
            System.out.println("Totalrx" +total_rx);
            for(WebElement ele:dropdown_list) {
                String rx_name = ele.getText();
            System.out.println("rx list" + rx_name);
            }
            if(waitForPresenceOfElement(medSearch, 20)){
               type(medSearch,value);
                //moveToElementAndClick(medSearch);
                sendKeys(Keys.ArrowDown);
            }
7th try: 
     public void selectFromDropdown(String value) throws IOException, AWTException {
            WebElement dropdown = Driver.findElement(By.xpath("//input[@placeholder='Search for a medication...']"));
            Select dropdownXpath = new Select(dropdown);
            List<WebElement>dropdown_list = dropdownXpath.getOptions();
            int total_rx = dropdown_list.size();
            System.out.println("Totalrx" +total_rx);
            for(WebElement ele:dropdown_list) {
                String rx_name = ele.getText();
                System.out.println("rx list" + rx_name);
            }
            System.out.println("Selected " + value + " for  Dropdown ");
            if(dropdown.isDisplayed()) {
                emanager.Pass("Verify whether user is able to select value from dropdown","User is able to select value from dropdown");
                System.out.println("User is able to select value from dropdown");
                dropdownXpath.selectByVisibleText(value);
            } else {
                emanager.Failure("Verify whether user is able to select value from dropdown", "User is not able to select value from dropdown", Driver);
                System.out.println("User is not able to select value from dropdown");
                assert(true);
            }

        }

Aucun commentaire:

Enregistrer un commentaire