Запустите JavaScript из ie по VBA - PullRequest
1 голос
/ 23 сентября 2019

Мне нужно извлечь отчет с веб-сайта и экспортировать его в Excel.

Я могу войти в систему и нажать на первый из двух элементов div, которые мне нужно нажать, но когда я прикажу vba нажатьна втором div ничего не происходит.

Я новичок в этом бизнесе и ничего не знаю о javascript, поэтому, пожалуйста, исправьте меня, если я что-то не так говорю.

Это рассматриваемый сайт:

http://gaps.myeasy.com.br/gaps2010/Spek/Principal.aspx

Мне нужно нажать «Gestão», а затем «Controle de Atividades».

Мой код пока:

Sub LoginGaps()

Dim IE As Object

    'START INTERNET EXPLORER
    Set IE = CreateObject("InternetExplorer.application")
    IE.Visible = True
    IE.Navigate ("http://gaps.myeasy.com.br/gaps2010/Spek/Principal.aspx")
    While IE.Busy Or IE.readyState <> 4: DoEvents: Wend

    'LOGIN TO WEBSITE
    'frmLogin.Show

    'CLICK ON "GESTÃO"
    IE.document.getElementById("uwlBar_Group_2_text_top").Click

    'CLICK ON "CONTROLE DE ATIVIDADES"
    IE.document.getElementById("uwlBar_2_Item_1").Click

End Sub

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

Несмотря на то, что я не знаю javascript, я мог понять, какой сценарий активирован, когда нажимаю «Controle de atividades», но мне нужно знать значение «sReturn», чтобы можно было вызывать его с помощью «execScript»,и я не смог найти ценность sReturn из-за моей неопытности.

Это сценарийt:

function aftermenu(sRetorno)
{
    var aRetorno=sRetorno.split("|");
    var iModulo=aRetorno[0];
    var sId=aRetorno[1];
    var sPagina=aRetorno[2];
    var sLogin=aRetorno[3];
    var iPermissao=aRetorno[4];
    if (iPermissao=="1")
    {
        if (lstItem!=null)
        {
            lstItem.style.backgroundColor="#f9f9f9";
            lstItem.onmouseover=function(){this.style.background="#d6d3d6"};
            lstItem.onmouseout=function(){this.style.background="#f9f9f9"};
            //lstItem.setSelected(false);
        }                
        lstItem=null;
        if (sId!=""){    
        lstItem=document.getElementById(sId);
        lstItem.style.backgroundColor="#dee6f3";
        lstItem.onmouseover=function(){};
        lstItem.onmouseout=function(){};
        /*
        lstItem=iglbar_getItemById(sId).element;/*
        lstItem.setSelected(true);*/}
        frmPrincipal=document.getElementById("frmPrincipal");
        frmPrincipal.location.href=sPagina;
    }            
    else
    {
         showmessage("Acesso ao módulo/função não permitido para o usuário "+sLogin+".\nConsulte o administrador do sistema.",520,constInfo,constOk,this,false);
    }
}

Сценарий разделяет значение sRetorno на 5 переменных, а затем открывает ссылку в "frmPrincipal", который является огромным квадратом на странице, и по этой ссылке я нахожу отчет.Если вы можете помочь мне определить, как определяется значение sRetorno, я подумал о двух возможностях.

Первый - вызвать скрипт с помощью «execScript», а второй - взять значение sPagina и открыть ссылку напрямую.чтобы извлечь отчет, если это возможно.

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

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

Большое спасиборебята.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Большое спасибо за помощь @QHarr!

Еще один способ - добавить разрыв в код, и когда я нажал, где страница вызывает функцию, я мог проверить значение sRetorno с помощьюкод прерван.

0 голосов
/ 23 сентября 2019

Если вы откроете вкладку сети браузера с помощью F12, а затем нажмете «CONTROLE DE ATIVIDADES» (после входа в систему), вы должны увидеть все необходимые значения в теле запроса POST, связанного с сделанным вами кликом.

Событие:

enter image description here

Тело (может выглядеть немного иначе, поскольку я не вошел в систему):

enter image description here

Примечание:

Вы должны ожидать ограниченные функциональные возможности / методы из-за указания веб-дизайнера, что браузер будет работать как:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...