Tôi đang cố gắng làm quen với trình điều khiển selenium-web ruby mới vì nó xuất hiện trực quan hơn so với phiên bản trước của selen và trình điều khiển ruby đi với nó. Ngoài ra, tôi đã gặp rắc rối khi sử dụng selenium cũ để làm việc với ruby 1.9.1 trong các cửa sổ vì vậy tôi nghĩ tôi sẽ tìm kiếm một giải pháp thay thế. Cho đến nay tôi đã làm điều này với kịch bản của tôi:Làm cách nào để đặt tùy chọn được chọn bằng ứng dụng Selenium WebDriver (selenium 2.0) trong ruby
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.get "https://example.com"
element = driver.find_element(:name, 'username')
element.send_keys "mwolfe"
element = driver.find_element(:name, 'password')
element.send_keys "mypass"
driver.find_element(:id, "sign-in-button").click
driver.find_element(:id,"menu-link-my_profile_professional_info").click
driver.find_element(:id,"add_education_btn").click
country_select = driver.find_element(:name, "address_country")
Vì vậy, về cơ bản tôi đang đăng nhập vào trang web của tôi và cố gắng để thêm một mục giáo dục vào hồ sơ người dùng của tôi .. Tôi có một tham chiếu đến một hộp chọn với tùy chọn (trong biến country_select) và bây giờ tôi muốn chọn một tùy chọn với một giá trị nhất định .. Tôi không thấy làm thế nào để làm điều này trong khách hàng mới .. Điều duy nhất tôi có thể nghĩ đến làm là lặp qua tất cả các tùy chọn cho đến khi tôi tìm thấy cái tôi muốn, và sau đó gọi phương thức execute_script: http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Driver.html#execute_script-class_method để đặt chỉ mục đã chọn.
Có cách nào khác để thực hiện việc này không? Trong api java cho selen 2.0/webdriver đây: http://seleniumhq.org/docs/09_webdriver.html có là một ví dụ để làm điều này
Select select = new Select(driver.findElement(By.xpath("//select")));
select.deselectAll();
select.selectByVisibleText("Edam");
Nó không xuất hiện rằng phiên bản ruby có tính năng này mặc dù trừ khi tôi đang thiếu một cái gì đó. Mọi trợ giúp sẽ được đánh giá cao.
Điều này dường như không hoạt động, tôi đã thử country_select = driver.find_element (: xpath, "// chọn [id = 'address_country']/option = 'Austria'") country_select.select và điều đó đã không không làm gì cả. Tôi nghĩ phương pháp chọn giống như gọi select() trong javascript (đặt tiêu điểm vào một trường và đánh dấu văn bản) –
Bạn đã thử trước tiên lấy phần tử chọn, sau đó lặp qua các tùy chọn WebElement và gọi phương thức chọn trên WebElement mà bạn muốn ? – pnewhook
pnewhook đã đúng. Đây là mã Ruby tương đương: https://gist.github.com/777516 Nếu chọn yếu tố # không hoạt động, có thể thử Element # toggle. Nếu bạn nghĩ rằng API quá thấp, bạn có thể muốn kiểm tra gem gem watir-webdriver như một API thay thế cho cùng một công nghệ. – jarib