Tôi có một điều khiển chọn trên trang web của mình. Tôi đang sử dụng các đối tượng trang để tương tác với trang. Nếu tôi làm (với 2 dòng đầu tiên trong lớp của tôi và selectByValue
theo phương pháp của tôi)selenium webdriver chọn phần tử
@FindBy(id="foo")
private Select foo;
foo.selectByValue("myValue");
Nó không có con trỏ rỗng. Tôi cũng đã thử mà không cần @FindBy
.
Bây giờ nếu tôi làm điều này trong phương pháp của tôi tất cả hoạt động tốt và chọn mục đúng
Select foo = new Select(sDriver.findElement(By.id("foo")));
foo.selectByValue("myValue");
Dưới đây là đoạn mã thực tế web cho điều khiển (chỉnh sửa để bảo vệ người vô tội)
<select id="foo" name="service_name">
<option selected="selected" value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
</select>
Hãy để tôi nói rằng tôi có một công việc xung quanh cho vấn đề của tôi nhưng Tôi không hiểu tại sao đường dẫn "bình thường" không hoạt động.
ahh có ý nghĩa nó chỉ có vẻ như nó nên đã làm việc vì vậy tôi không bao giờ thực sự đào sâu. Lỗi của tôi. Cảm ơn bạn – ducati1212
Lưu ý: nếu bạn bao gồm khai báo Chọn và bỏ trong lớp của bạn, ngay dưới khai báo WebElement riêng, bạn sẽ nhận được các lỗi thời gian chạy khi lớp được khởi tạo; để tránh điều này, bạn có thể đặt tờ khai Chọn và lớp trong phương thức tương tác với điều khiển màn hình. Một lần nữa không lý tưởng, nhưng nó dường như làm việc. –
với cách tiếp cận này, các pageobjects nên được khởi tạo sau khi trang đã được tải đầy đủ và đối tượng có mặt và hiển thị trong trình điều khiển. Để được ủy quyền, hãy xem [triển khai của tôi] (http://stackoverflow.com/questions/35931667/select-object-on-seleniums-pagefactory/36004572#36004572) – rrw