t.me/atinfo_chat Telegram группа по автоматизации тестирования

Получить данные из


(metr95) #1

Всем привет.

В Selenium'е я нуб. Только начал вникать.

Использую Selenium2 WebDriver с C#.

Есть страница с кодом:

 

<html xmlns="http://www.w3.org/1999/xhtml" lang="ru">
       <head>
              <script type="text/javascript">
                    var rlSerial = '485472';      
                    ......
              </script>
              .....
       </head>
       .....
</html>
 
как получить данные из rlSerial?
 
Спасибо.

(Vol) #2

Привет, попробуйте element.getAttribute("rlSerial"), должно помочь.


(Mykhailo Poliarush) #3

сначала надо вытащить текст из script, это делается обычным xpath (//script) или css (script)

а дальше средствами языка программирования и регулярными выражениями или поиском текста в сторке выкусить, то что нужно из текста

по регулярным выражениям можно посмотреть след. видео, там очень подробно показано, как работать с регулярными выражениями


(Mykhailo Poliarush) #4

это текст javascript-a, а не аттрибут у элемента, поэтому данный код не стработает.


(metr95) #5

в head'e есть несколько скриптов. как знать или я в правильном?

 

спасибо.


(Mykhailo Poliarush) #6

это уже надо знать, как правильно строить правильные локаторы

на xpath это будет так //script[contains(text(),'rSerial')]

более подробно можно посмотреть видео


(metr95) #7

ок. пасиба. будем посмотреть.


(Kedanachi) #8

Так как rlSerial в глобальной области видимости, то можно воспользоваться JavascriptExecutor'ом и передать ему такой скрипт "return rlSerial".


(Mykhailo Poliarush) #9

да, кстати это более элегантное решение, только надо быть 100% увереным, что переменная нигде не замещается на другое значение в javascript


(metr95) #10

Отлично! спасибо огромное. то что нужно. А то я уже накостылял с регулярками и индексами.

всего-то две строки

 

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
string srlserial = js.ExecuteScript("return rlSerial").ToString();