2013-11-22 12 views
34

am new to selenium, hiện đang làm việc trên selenium webdriver tôi muốn chọn một giá trị từ trình đơn thả xuống. Id = periodId và tùy chọn rất nhiều trong số đó đang cố gắng chọn 52 tuần qua.Cách chọn giá trị thả xuống trong Selenium WebDriver bằng cách sử dụng Java

Dưới đây là thẻ Html:

<select id="periodId" name="period" style="display: none;"> 
<option value="l4w">Last 4 Weeks</option> 
<option value="l52w">Last 52 Weeks</option> 
<option value="daterange">Date Range</option> 
<option value="weekrange">Week Range</option> 
<option selected="" value="monthrange">Month Range</option> 
<option value="yeartodate">Year To Date</option> 
</select> 

Xin gợi ý cho tôi một số cách để nhấp vào menu thả xuống.

tôi đã cố gắng với các dòng ví dụ trên nhưng đang nhận được lỗi như phần tử hiện chưa rõ ràng và do đó có thể không được tương tác với thời gian chỉ huy hoặc thời gian chờ: 32 mili giây các giá trị thả trầm là jquery multiselect định dạng phụ tùng

+1

bản sao có thể có của http://stackoverflow.com/questions/9604336/selenium-webdriver-select-element – dckuehn

+0

tôi đã thử phương thức được liên kết không hoạt động với các tùy chọn của tôi, tôi có thể có một số mẫu khác – Amirdha

+0

Tôi nghĩ rằng thả không hiển thị vì lý do nào đó và thay đổi nó không phải là cách tiếp cận rất tốt, nhưng bạn luôn có thể thay đổi giá trị thuộc tính của phần tử bằng cách sử dụng JavaScript –

Trả lời

82

Chỉ cần quấn WebElement của bạn vào Select Object như hình dưới đây

Select dropdown = new Select(driver.findElement(By.id("identifier"))); 

Một khi điều này được thực hiện, bạn có thể chọn các giá trị cần thiết trong 3 cách. Hãy xem xét một file HTML như thế này

<html> 
<body> 
<select id = "designation"> 
<option value = "MD">MD</option> 
<option value = "prog"> Programmer </option> 
<option value = "CEO"> CEO </option> 
</option> 
</select> 
<body> 
</html> 

Bây giờ để xác định thả xuống làm

Select dropdown = new Select(driver.findElement(By.id("designation")));

Để chọn tùy chọn của nó nói 'Lập trình' bạn có thể làm

dropdown.selectByVisibleText("Programmer ");

hoặc

dropdown.selectByIndex(1);

hoặc

dropdown.selectByValue("prog"); 
+2

Đây là một câu trả lời tốt cho việc sử dụng Chọn thường xuyên, nhưng tôi nghĩ rằng vấn đề thực sự của OP là Chọn phần tử không hiển thị -