2016-08-17 15 views
5

Tôi gặp sự cố khi tạo chức năng hợp lệ sẽ làm nổi bật một số yếu tố được xác định trên trang web. Xin lưu ý rằng tôi đang viết mã người mới bắt đầu và vấn đề có thể là vấn đề thiết lập môi trường đơn giản hoặc thiếu kiến ​​thức chính về các tính năng javascript/selenium.Selenium-WebDriver cách đánh dấu phần tử bằng trình duyệt javascript và firefox

Tôi tạo tập lệnh của mình trong Eclipse Neon. Để thiết lập một môi trường tôi đã cài đặt node.js và geckodriver để có thể hoạt động trên trình duyệt firefox. Sự khởi đầu của kịch bản của tôi là:

var webdriver = require('selenium-webdriver'), 
    By = webdriver.By 

var driver = new webdriver.Builder().forBrowser('firefox').build(); 

tôi mở trang web bằng cách sử dụng driver.get(); và sau đó tôi chỉ cần xác định vị trí phần tử bằng cách sử dụng xPath cũ .:

var element = driver.findElement(By.xpath("xPath goes here")); 

Và bây giờ câu hỏi bắt đầu, những gì nên Tôi làm để làm cho WebDriver để làm nổi bật yếu tố này được chỉ định với cho ex. viền đỏ? Trong khi duyệt Stack và các trang tương tự khác, câu trả lời duy nhất tôi tìm thấy là một cái gì đó về việc sử dụng JavaScript Executor trong cú pháp Java, hoặc một số chức năng webdriver sử dụng

element.style.backgroundColor = 'red' 

nhưng tôi nhận được giao diện điều khiển lỗi, mà style hoặc một số phần khác của cú pháp không phải là một hàm. Tại thời điểm này, tôi ra khỏi các giải pháp làm thế nào để làm cho điều này xảy ra, và tôi từ từ nghi ngờ, rằng tôi sẽ có thể hoàn thành nhiệm vụ này mà không có kiến ​​thức về html5/java. Có lẽ ai đã từng gặp khó khăn như vậy và sẽ chia sẻ đầu mối?

https://jsfiddle.net/osav574j/ < - Tôi đã chuẩn bị phiên bản đơn giản của tập lệnh có thể cung cấp cho bạn manh mối về cách mã đầy đủ của tôi trông như thế nào. Phần nổi bật có lẽ là sai, nó chỉ để cho bạn thấy, làm thế nào tôi nghĩ rằng nó có thể được thực hiện, nhưng đó là giả định tinh khiết.

Chúc mừng! Perkele

Trả lời

2

Bạn nên cố gắng sử dụng executeScript() như sau: -

var element = driver.findElement(By.xpath("xPath goes here")); 
driver.executeScrip‌t("arguments[0].style.backgroundColor = 'red'", element); 
+2

Hoạt động hoàn hảo! driver.executeScript(); là thứ tôi đang tìm kiếm. Cảm ơn bạn Saurabh! – Perkele

0

Đây là mã Javascript để đánh dấu phần tử. Selenium không có phương pháp gốc nào để làm nổi bật do đó cách duy nhất là sử dụng mã tương tự như sau:

JavascriptExecutor js=(JavascriptExecutor)driver; 
js.executeScript("arguments[0].setAttribute('style,'border: solid 2px red'')", username); 

Tên người dùng này là tên của webelement.

+0

Khi tôi cố gắng thực hiện giải pháp như vậy (hoặc bất kỳ tương tự) tôi nhận được báo lỗi "Lỗi Cú pháp: định danh bất ngờ" có liên quan đến "js". Có lẽ tôi thiếu một số thư viện hoặc tôi đã bỏ lỡ để gọi một số điều quan trọng trong kịch bản của tôi trước khi sử dụng JavascriptExecutor? – Perkele

+1

JavascriptExecutor thuộc về gói này - org.openqa.selenium Ngôn ngữ nào bạn đang sử dụng selen với? –

+0

Tôi đang viết bằng JavaScript và sử dụng Eclipse Neon (xây dựng cho JavaScript). Tôi đã tìm thấy, việc gọi org.openqa.selenium là bắt buộc đối với Java, nhưng trong JavaScript tất cả những gì tôi phải làm là mở mã ứng dụng của mình bằng 'var webdriver = require ('selenium-webdriver')' và sau đó chỉ cần gọi JavascriptExecutor với 'driver.executeScrip‌t();' như Sauarbh Gaur đã gợi ý. – Perkele

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