2015-09-30 10 views
6

Tôi đã gặp khó khăn trong việc tìm ra cách để có được một biến để làm việc Selenium. Bài đăng này dường như đã giúp (Variable not working inside parenthesis) nhưng tôi vẫn không thể làm cho nó hoạt động.Sử dụng một biến trong xpath trong Python Selenium

Khi tôi đã sử dụng giá trị thực, nó hoạt động. Trong trường hợp này là AL-Alabama. Tôi tạo ra một biến gọi là nhà nước để tôi chỉ có thể gọi rằng trong chức năng của tôi. Tôi có 13 tiểu bang để chạy qua.

driver.find_element_by_xpath("//option[@value='AL-Alabama']").click() 

Biến này sử dụng biến trạng thái và nhìn vào thông báo lỗi hiển thị giá trị biến là AL-Alabama. Vì vậy, có vẻ như nó tham chiếu giá trị chính xác trong trang web. Không chắc chắn những gì tôi đang thiếu hoặc lý do tại sao nó không hoạt động. Mọi hướng dẫn sẽ được đánh giá cao.

driver.find_element_by_xpath('//option[@value=' + state + ']').click() 
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//option[@value=AL-Alabama]"} 
+0

Tại sao không sử dụng Chọn? –

+0

Tôi đã đánh dấu bài đăng bằng @EGHM làm câu trả lời. Nhưng đối với những người có thể sử dụng thông tin này tôi đã thấy rằng Chọn cũng thực sự làm việc. Tôi đã sử dụng Select (driver.find_element_by_class_name ("c3")). Select_by_visible_text (state). Không chắc chắn nếu tôi có nghĩa vụ phải đặt mã trong một bình luận. – shavar

+1

@shavar đi với một sự trừu tượng Chọn thực sự là một cách sạch hơn nhiều để tiếp cận vấn đề. – alecxe

Trả lời

4

Dấu nháy đơn xung quanh giá trị không có mặt với cách bạn mã hóa nó. Thử:

driver.find_element_by_xpath("//option[@value='" + state + "']").click() 
+0

Đúng rồi. Vì vậy, tôi đoán nó không được đọc nó như là một chuỗi? Điều này sẽ giúp tôi với các dự án khác của tôi. Cảm ơn bạn. – shavar

+0

Tôi nghĩ python đã đọc nó như một chuỗi. Tôi biết từ rất nhiều kinh nghiệm những dấu ngoặc kép xung quanh các giá trị sau khi dấu bằng được yêu cầu bởi Selenium. – EGHM

+1

Siêu hữu ích. Cảm ơn. –

Các vấn đề liên quan