-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

2

没有理由单击选择表单 ( driver.findElement(By.id("edit-show")).click()),您只想选择一个元素(使用Select类)。这也可能是您的代码无法正常工作的原因。您应该删除此行,它应该可以工作。

于 2013-07-22T09:42:40.650 回答
0

以下代码将起作用 WebDriver driver = new ChromeDriver();

     driver.get("http://www.theatrepeople.com/");
     WebElement dropDown = driver.findElement(By.id("edit-ticket-no"));
     Select sel = new Select(dropDown);
     sel.selectByVisibleText("1 ticket");
于 2013-07-22T09:51:41.943 回答
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 回答