2013-07-22 2 views
-1

Я пытаюсь выбрать раскрывающийся список этого сайта и приступить к покупке шоу, но я не могу это сделать, пожалуйста, помогите.Я не могу выбрать выпадающее меню с помощью selenium webdriver, пожалуйста,

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

ответ

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); 
    } 
+0

Спасибо, Vinay сейчас работает нормально, но работает только на Firefox. браузера это не работает.Я использовал тот же код, только изменил данные драйвера.Я делаю что-то не так? – user2606274

+0

Он работал с хромом и firefox для меня. Позвольте мне проверить это и вернуться завтра. – Vinay

+0

Изменили код немного. Будет работать над y браузера. Приветствия. – Vinay

2

Там нет причин, чтобы нажать на форму выберите (driver.findElement(By.id("edit-show")).click()), вы просто хотите, чтобы выбрать элемент (используя Select класс). Вероятно, это также причина, по которой ваш код не работает. Вы должны удалить эту строку, и она должна работать.

+0

Я удалил driver.findElement (By.id ("edit-show")). Click(); все же он не может выбрать шоу. 39 шагов и он перестает метать ошибку. org.openqa.selenium.WebDriverException: неизвестная ошибка: элемент не кликабельен в точке (827, 251). Другой элемент получит клик: user2606274

+0

И что случилось? ... – LaurentG

+0

Я не могу выбрать Show, и это останавливает меня, чтобы перейти к следующему шагу – user2606274

0

Следующий код будет работать WebDriver driver = новый 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"); 
+0

Используйте этот код. Я тестировал его. – Vinay

+0

Я не могу выбрать Show, и это останавливает меня, чтобы перейти к следующему шагу. – user2606274