-1

このサイトのドロップダウンを選択して番組の購入に進みたいのですが、できません。助けてください。

 System.setProperty("webdriver.chrome.driver", "C:/Selenium/chromedriver.exe");
 WebDriver driver = new ChromeDriver();              
 driver.get("http://www.theatrepeople.com/");

 driver.findElement(By.id("edit-show")).click();

 new Select(driver.findElement(By.id("edit-show"))).selectByVisibleText("The 39 Steps");
 driver.findElement(By.id("edit-date-datepicker-popup-0")).click();
 driver.findElement(By.linkText("27")).click();
 driver.findElement(By.id("edit-ticket-no")).click();
 new Select(driver.findElement(By.id("edit-ticket-no"))).selectByVisibleText("1 ticket");
 driver.findElement(By.id("edit-submit-1")).click();
4

3 に答える 3

0

次のコードを使用します。Java スクリプトを使用して、値に基づいてテキストを選択します。本当にいい質問です。私も学ばなければなりません。

static WebDriver driver;

    public static void main(String[] args) 
    {
        System.setProperty("webdriver.chrome.driver", "D:\\ToCustomer_31_5_13\\src\\main\\resources\\Drivers\\chromedriver.exe");
          driver = new FirefoxDriver();              
          driver.get("http://www.theatrepeople.com/");

          driver.findElement(By.id("edit-show")).click();
          WebElement show = driver.findElement(By.xpath("//div[@id = 'edit-show-wrapper']//div[@id = 'showNameWrap']"));
          List<WebElement> l = show.findElements(By.tagName("option"));
          String valueToSelect = getAttibuteValueForShow(l, "The American Plan");         
           driver.findElement(By.id("mini-basket-ajax")).click();
          selectValueInDropDown(valueToSelect);       
    }


    public static String getAttibuteValueForShow(List<WebElement> li, String showName)
    {
        int j =0;
        String value = null;
         for(int i =0; i<li.size(); i++)
         {
             j = j +1;
             String dropDownText = li.get(i).getText();
             if(dropDownText.equalsIgnoreCase(showName))
             {
                value =  driver.findElement(By.xpath("//div[@id = 'edit-show-wrapper']//div[@id = 'showNameWrap']//option[" + j +"]")).getAttribute("value");
                System.out.println(value);
                 break;
             }
         }
         return value;
    }

    public static void selectValueInDropDown(String value)
    {
        JavascriptExecutor js = (JavascriptExecutor) driver;
         String jsCmd = "document.getElementsByName('show')[0].value='" + value + "'";
         js.executeScript(jsCmd);
    }
于 2013-07-23T06:35:04.920 に答える