2016-08-17 2 views
5

У меня возникла проблема с созданием действительной функции, которая выделяет определенные определенные элементы на веб-странице. Обратите внимание, что я начинаю программировать, и проблема может быть либо простой проблемой настройки среды, либо отсутствием больших знаний о функциях javascript/selenium.Selenium-WebDriver как выделить элемент с помощью браузера javascript и firefox

Я создаю свой сценарий в Eclipse Neon. Чтобы настроить среду, я установил node.js и geckodriver, чтобы иметь возможность работать в браузере Firefox. Начало моего сценария:

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

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

открыть веб-страницу с помощью driver.get();, а затем я просто определить местоположение элемента с помощью XPATH напр .:

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

А теперь начинается вопрос о том, что должно Я делаю, чтобы WebDriver выделил этот указанный элемент, например, ex. красная граница? При просмотре стеки и других подобных страницах, единственные ответы, которые я обнаружил, что-то об использовании JavaScript Исполнителя в синтаксисе Java, или некоторые функции WebDriver с помощью

element.style.backgroundColor = 'red' 

, но я получаю ошибку консольной, что style или какую-либо другая часть синтаксис не является функцией. На данный момент у меня нет решений, как это сделать, и я медленно сомневаюсь, что я смогу закончить эту задачу без знания о html5/java. Может быть, кто-нибудь когда-либо сталкивался с такими трудностями и поделится ключом?

https://jsfiddle.net/osav574j/ < - Я подготовил просто версию моего сценария, которая может дать вам представление о том, как выглядит мой полный код. Исключительная часть, вероятно, неверна, это просто показать вам, как я думал, что это можно сделать, но это чистое предположение.

Cheers! Perkele

ответ

2

Вы должны попробовать использовать executeScript(), как показано ниже: -

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

Работает отлично! driver.executeScript(); была тем, что я искал. Спасибо, Сауран! – Perkele

0

Это код Javascript для выделения элемента. Селен не имеет нативный метод, чтобы выделить, следовательно, единственный выход использует код, подобный этому:

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

Здесь имя пользователя является имя webelement.

+0

Когда я пытаюсь реализовать такое решение (или любое подобное), я получаю ошибку «SyntaxError: Неожиданный идентификатор», который относится к «JS». Может быть, мне не хватает некоторых библиотек, или я пропустил вызов какой-то важной вещи в моем сценарии перед использованием JavascriptExecutor? – Perkele

+1

JavascriptExecutor принадлежит к этому пакету - org.openqa.selenium На каком языке вы используете селен? –

+0

Я пишу в JavaScript и использую Eclipse Neon (сборка для JavaScript). Я обнаружил, что вызов org.openqa.selenium требуется для Java, но в JavaScript все, что мне нужно было сделать, - это открыть код приложения с помощью «var webdriver = require (« selenium-webdriver »)», а затем просто вызвать JavascriptExecutor с 'driver.executeScript();' как предложил Сауарб Гаур. – Perkele

Смежные вопросы