2016-08-17 44 views
5

Mam problem z utworzeniem prawidłowej funkcji, która będzie podświetlać określone zdefiniowane elementy na stronie. Proszę zauważyć, że programuję dla początkujących, a problemem może być albo prosty problem z konfiguracją środowiska, albo brak podstawowej wiedzy o funkcjach javascript/selen.Selenium-WebDriver jak wyróżnić element przy użyciu javascript i przeglądarki Firefox

Tworzę skrypt w Eclipse Neon. Aby skonfigurować środowisko, zainstalowałem node.js i geckodriver, aby móc pracować w przeglądarce Firefox. Początki mojego skryptu jest:

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

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

otworzyć stronę internetową za pomocą driver.get(); a potem po prostu określić lokalizację elementu za pomocą xPath np .:

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

I teraz zaczyna się pytanie, co powinno Robię, aby WebDriver podświetlił ten określony element za pomocą np. czerwona granica? Podczas przeglądania stosu i innych podobnych stron, tylko odpowiedzi znalazłem coś o użyciu JavaScript Executor w składni Javy lub niektóre funkcje webdriver korzystając

element.style.backgroundColor = 'red' 

ale dostaję błąd konsoli, że style lub jakaś inna część z składnia nie jest funkcją. W tym momencie nie mam rozwiązań, jak to zrobić, i powoli wątpię, że będę w stanie ukończyć to zadanie bez wiedzy o html5/java. Może ktokolwiek kiedykolwiek napotkał na takie trudności i podzieli się wskazówką?

https://jsfiddle.net/osav574j/ < - Przygotowałem skróconą wersję mojego skryptu, która może dać ci wskazówkę, jak wygląda mój pełny kod. Najciekawsza część jest prawdopodobnie błędna, to tylko po to, aby pokazać ci, jak myślałem, że to możliwe, ale to jest czyste założenie.

Pozdrawiam! Perkele

Odpowiedz

2

należy spróbować użyć executeScript() jak poniżej: -

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

Działa idealnie! driver.executeScript(); to było to, czego szukałem. Dziękuję Saurabh! – Perkele

0

To jest kod JavaScript do podświetlenia elementu. Selen nie ma żadnego sposobu, aby podświetlić natywną dlatego jedynym wyjściem jest użycie kodu podobnego do tego:

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

Tutaj nazwa_użytkownika jest nazwą webelement.

+0

Kiedy próbuję wdrożyć takie rozwiązanie (lub podobnym) pojawia się błąd „SyntaxError: Nieoczekiwany identyfikator”, który odnosi się do „js”. Może brakuje mi niektórych bibliotek lub nie udało mi się nazwać jakiejś ważnej rzeczy w moim skrypcie przed użyciem JavascriptExecutor? – Perkele

+1

JavascriptExecutor należy do tego pakietu - org.openqa.selenium W jakim języku używasz selenu? –

+0

Piszę w JavaScript i używając Eclipse Neon (kompilacja dla JavaScript). Odkryłem, że wywołanie org.openqa.selenium jest wymagane w Javie, ale w JavaScript wszystko, co musiałem zrobić, to otworzyć kod aplikacji za pomocą 'var webdriver = require ('selenium-webdriver')', a następnie po prostu zadzwonić JavascriptExecutor z 'driver.executeScript();' jak zasugerował Sauarbh Gaur. – Perkele