Перейти к содержимому

Фотография

Определение значения скрытого элемента

webdriver + vb

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 MasterNK

MasterNK

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Эд

Отправлено 12 апреля 2017 - 16:28

Суть проблемы такая.

Есть элементы значения которых мне нужно мониторить. Таймеры всякие и прочие значения.

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

 

anyTimer = driver.FindElement(By.Id("info")).GetAttribute("innerHTML")

 

Но если не кликнуть по объекту, то значение не считывается. Это происходит потому что webdriver просто не может найти нужный объект. Его попросту нет. Но можно послать запрос на сервер и получить значение этого объекта. Я нашел кусок кода расширения для Хрома которое посылает такие запросы.

var exgb=chrome.extension.getBackgroundPage().exgb;
$(function()
{function i18n_set_prop(selector,prop,msg)
{document.querySelector(selector)[prop]=chrome.i18n.getMessage(msg)}
function csSendMessage(data,response)
{chrome.tabs.query({active:true,currentWindow:true},function(tabs)
{chrome.tabs.sendMessage(tabs[0].id,data,response)})}
{csSendMessage({action:"exgb_get",data:"stat"},function(response)

А может ли webdriver послать подобный запрос сам или при помощи подобного js?

 Я нарыл как прикрутить в webdriver  код js  так что бы он кликал по скрытым объектам. А вот как прикрутить этот код я что то не соображу. 

Кто подскажет?


  • 0

#2 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 13 апреля 2017 - 07:36

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("твой скрипт");

  • 0

#3 MasterNK

MasterNK

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Эд

Отправлено 13 апреля 2017 - 08:37

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("твой скрипт");

Это я и сам понял, суть не в том как инициировать исполнение js, а как именно написать сам скрипт. Тот что я написал дает ошибку синтаксиса, а я не силен в js.

 

Так то я могу выполнить js

  Dim obj As IWebElement = Nothing
        Try
            obj = driver.FindElement(By.CssSelector("li.qh-object"))
        Catch
        End Try
        If obj IsNot Nothing Then
            Dim jsE As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor)
            jsE.ExecuteScript("arguments[0].click();", obj)
        End If

вот таким кодом я кликаю по объектам.

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


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных