none
BodyClass

    Вопрос

  • Добрый день.

    Столкнулся с проблемой, не выполняется скрипт:

    Добавление комментов.

    получаю ошибку:

    Сбой вызова метода из-за отсутствия в [mshtml.HTMLBodyClass] метода с именем "getElementsByClassName".C:\Users\sbt-sivokon-rm\Documents\PowerSHell\20170803_парсинг+скачи

    вание\Парсинги, скачивание, UI.ps1:113 знак:32

    +         $ie.Document.body | % {$_.getElementsByClassName("RichTextEditorWidget V ...

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException

        + FullyQualifiedErrorId : MethodNotFound


    7 августа 2017 г. 14:53

Все ответы

  • Приведите:

    1. $PSVersionTable
    2. (Get-CimInstance Win32_OperatingSystem) | Select Caption,BuildNumber
    3. Версия IE
    4. И полный код скрипта с указанием сайта до ошибки
    7 августа 2017 г. 19:42
    Отвечающий
  • 1.

    PS C:\Users\Admin\$PSVersionTable

    Name                           Value                                                                                                                                     

    ----                           -----                                                                                                                                    

    PSVersion                      4.0                                                                                                                                     

    WSManStackVersion              3.0                                                                                                                                       

    SerializationVersion         1.1.0.1                                                                                                                                  

    CLRVersion  4.0.30319.34209                                                                                                                          

    BuildVersion                   6.3.9600.16406                                                                                                                            

    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}                                                                                                                   

    PSRemotingProtocolVersion      2.2                                                              

    2. WIN7 Enterprise  BuildNumber 7601

    3. IE 11.0.9600.18665 Версии  обновления: 11.0.42(KB4018271)

    4.

    Add-Type -AssemblyName System.Windows.Forms

    Add-Type -AssemblyName System.Drawing

    [void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.SendWait")

    $wshell = New-Object -ComObject Wscript.Shell

    $fL = $true

    $Name1 = '1.txt'

    $Name2 = '2.txt'

    function _writeComment($page){

        $cmt = $comment

        $ie = New-Object -ComObject InternetExplorer.Application

        $ie.Visible=1

        $ie.Navigate($loginPage)

        While ($ie.Busy) {

            Start-Sleep -Milliseconds 400

        }

        #Start-Sleep -Milliseconds 1000

          $itemPage =  "https ://hs22-33.ru:9443/jazFtem&id=" + $page

        $ie.Navigate($itemPage) ---- Вот тут падает----

        $ie.Document.body | % {$_.getElementsByClassName("RichTextEditorWidget ViewBorder com-ibm-team-workitem-shared-RichText cke_editable cke_editable_inline cke_contents_ltr")} | where {$_.uniqueNumber -eq "2"} | % {$d = $_.innerHTML}

        $d = $null 

        While ($d -eq $null) {

            Start-Sleep -Milliseconds 400

            Write-Host "Ждем..."

            $ie.Document.body | % {$_.getElementsByClassName("RichTextEditorWidget ViewBorder com-ibm-team-workitem-shared-RichText cke_editable cke_editable_inline cke_contents_ltr")} | where {$_.uniqueNumber -eq "2"} | % {$d = $_.innerHTML}

        }

    10 августа 2017 г. 7:50
  • Попробуйте:

    $ie.Document.documentElement | Foreach {$_.getElementsByClassName("RichTextEditorWidget ViewBorder com-ibm-team-workitem-shared-RichText cke_editable cke_editable_inline cke_contents_ltr")}

    10 августа 2017 г. 8:10
    Отвечающий
  • Добрый день.

    Поробовал. Ошибка таже.

    Сбой вызова метода из-за отсутствия в [mshtml.HTMLHtmlElementClass] метода с именем "getElementsByClassName".C:\Users\sbt-sivokon-rm\Documents\PowerSHell\20170803_парсинг+скачивание\UI_RUS23.ps1:115 знак:49

    +         $ie.Document.documentElement | Foreach {$_.getElementsByClassName("RichT ...

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException

        + FullyQualifiedErrorId : MethodNotFound

    Сбой вызова метода из-за отсутствия в [mshtml.HTMLHtmlElementClass] метода с именем "getElementsByClassName".C:\Users\sbt-sivokon-rm\Documents\PowerSHell\20170803_парсинг+скачивание\UI_RUS23.ps1:115 знак:49

    +         $ie.Document.documentElement | Foreach {$_.getElementsByClassName("RichT ...

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException

        + FullyQualifiedErrorId : MethodNotFound 

    11 августа 2017 г. 6:43
  • На компьютере установлен Office и файл "C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll" присутствует?

    Что выводит:

    $ie = new-object -com InternetExplorer.Application
    $ie.Navigate("ya.ru")
    
    $ie.Document.body | Get-Member GetE*
    $ie.Document.body.getElementsByClassName("b-page css3-transition-off")
    
    
    


    11 августа 2017 г. 15:36
    Отвечающий
  • PS C:\Users\> $ie = new-object -com InternetExplorer.Application

    PS C:\Users\> $ie.Navigate("ya.ru")

    PS C:\Users\> $ie.Document.body | Get-Member GetE*

       TypeName: mshtml.HTMLBodyClass

    Name                 MemberType Definition                                                                                                                               

    ----                 ---------- ----------                                                                                                                              

    getElementsByTagName Method     mshtml.IHTMLElementCollection, Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a getElementsByTag...

    getExpression        Method     System.Object getExpression(string propname), System.Object DispHTMLBody.getExpression(string propname), System.Object IHTMLElement2.g...

    PS C:\Users\> $ie.Document.body.getElementsByClassName("b-page css3-transition-off")

    Сбой вызова метода из-за отсутствия в [mshtml.HTMLBodyClass] метода с именем "getElementsByClassName".строка:1 знак:1

    + $ie.Document.body.getElementsByClassName("b-page css3-transition-off")

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException

        + FullyQualifiedErrorId : MethodNotFound

    PS C:\Users\>  

    14 августа 2017 г. 11:07
  • файл "C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll" присутствует
    14 августа 2017 г. 11:09
  • А на компьютере сколько библиотек Microsoft.mshtml.dll и в каких местах?
    14 августа 2017 г. 12:16
    Отвечающий
  • 2 штуки

    1) C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\

    2) C:\Program Files (x86)\SAP\Business Explorer\BI\

    14 августа 2017 г. 12:30
  • Попробуйте установить:

    https://download.microsoft.com/download/f/7/1/f71fe670-5c84-4095-8341-806d0e0dfb99/vs_ideredist.exe

    После установки должно быть:

    PS > [mshtml.HTMLBodyClass].Assembly
    
    GAC    Version        Location
    ---    -------        --------
    True   v1.0.3705      C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll
    
    
    PS > gi C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll
    
    
        Directory: C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a
    
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----       29.09.2016     14:55        8032448 Microsoft.mshtml.dll

    http://dropmefiles.com/DxV0t - Библиотека

    Регистрация:

    [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")            
    $publish = New-Object System.EnterpriseServices.Internal.Publish            
    $publish.GacInstall("C:\Path\To\Microsoft.mshtml.dll")

    • Изменено KazunEditor 14 августа 2017 г. 19:44
    14 августа 2017 г. 13:26
    Отвечающий
  • Обновил библиотеку: ошибка та же

    S C:\Users\> [mshtml.HTMLBodyClass].Assembly

     

    GAC    Version        Location                                                                                                                                          

    ---    -------        --------                                                                                                                                           

    True   v1.0.3705      C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll                                                         

     

     

     

    PS C:\Users\> gi C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll

     

     

        Каталог: C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a

     

     

    Mode                LastWriteTime     Length Name                                                                                                                       

    ----                -------------     ------ ----                                                                                                                        

    -a---        04/07/2016     16:36    8007680 Microsoft.mshtml.dll                                                                                                       

     

     

     

    PS C:\Users\> C:\Users\Documents\PowerSHell\20170803_парсинг+скачивание\Парсингискачивание, UI.ps1

    2

    Сбой вызова метода из-за отсутствия в [mshtml.HTMLBodyClass] метода с именем"getElementsByClassName".C:\Users\Documents\PowerSHell\20170803_парсинг+скачи

    вание\Парсинги, скачивание, UI.ps1:113 знак:32

    +         $ie.Document.body | % {$_.getElementsByClassName("RichTextEditorWidget V ...

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException

        + FullyQualifiedErrorId : MethodNotFound

    16 августа 2017 г. 8:32
  • http://dropmefiles.com/DxV0t - Библиотека

    1. Скопировать с заменой в  C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\
    2. Выполнить метод
    [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")            
    $publish = New-Object System.EnterpriseServices.Internal.Publish 
    $publish.GacRemove("C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll")

       3. Выполнить метод

    $publish.GacInstall("C:\Program Files (x86)\Microsoft.NET\primary interop assemblies\Microsoft.mshtml.dll")

      4. Проверить размер в GAC = 8032448

    gi C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll

      5. Обновить WMF до 5.1 - https://www.microsoft.com/en-us/download/details.aspx?id=54616

      6. Перезагрузиться и проверить результат

     

    • Изменено KazunEditor 16 августа 2017 г. 10:03
    16 августа 2017 г. 9:57
    Отвечающий
  • Ошибка та же:

    Сбой вызова метода из-за отсутствия в [mshtml.HTMLBodyClass] метода с именем "getElementsByClassName".C:\Users\ \Documents\PowerSHell\20170803_парсинг+скачи

    вание\Парсинги, скачивание, UI.ps1:113 знак:32

    +         $ie.Document.body | % {$_.getElementsByClassName("RichTextEditorWidget V ...

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException

        + FullyQualifiedErrorId : MethodNotFound

    Сбой вызова метода из-за отсутствия в [mshtml.HTMLBodyClass] метода с именем "getElementsByClassName".C:\Users\ \Documents\PowerSHell\20170803_парсинг+скачи

    вание\Парсинги, скачивание, UI.ps1:113 знак:32

    +         $ie.Document.body | % {$_.getElementsByClassName("RichTextEditorWidget V ...

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException

        + FullyQualifiedErrorId : MethodNotFound

    17 августа 2017 г. 13:56
  • Запустить консоль без профиля(-noprofile) и проверить $host.Runspace.ApartmentState=Sta, консоль должна 64 бита и покажите вывод:

    add-type -path C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll
    $ie.Navigate("ya.ru")
    $ie.Document.body | gm gete*


    • Изменено KazunEditor 17 августа 2017 г. 14:24
    17 августа 2017 г. 14:24
    Отвечающий
  • PS C:\Users\ > add-type -path C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll
    $ie.Navigate("ya.ru")
    $ie.Document.body | gm gete
     
    Невозможно вызвать метод для выражения со значением NULL.строка:2 знак:1
    + $ie.Navigate("ya.ru")
    + ~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull
     
    Get-Member : Укажите объект для командлета Get-Member.строка:3 знак:21
    + $ie.Document.body | gm gete
    +                     ~~~~~~~
        + CategoryInfo          : CloseError: (:) [Get-Member], InvalidOperationException
        + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand
     
     
    PS C:\Users\ > 
     
    От Администратора:
    PS C:\WINDOWS\system32> add-type -path C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll
    $ie.Navigate("ya.ru")
    $ie.Document.body | gm gete
     
    Невозможно вызвать метод для выражения со значением NULL.строка:2 знак:1
    + $ie.Navigate("ya.ru")
    + ~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull
     
    Get-Member : Укажите объект для командлета Get-Member.строка:3 знак:21
    + $ie.Document.body | gm gete
    +                     ~~~~~~~
       + CategoryInfo          : CloseError: (:) [Get-Member], InvalidOperationException
        + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand
     
     

    PS C:\WINDOWS\system32> 

    17 августа 2017 г. 14:46
  • add-type -path C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll
    $ie = new-object -com InternetExplorer.Application
    $ie.Navigate("ya.ru")
    $ie.Document.body | Get-Member GetE*

    17 августа 2017 г. 15:40
    Отвечающий
  • У компа нет выхода в интернет.

    PS C:\WINDOWS\system32> add-type -path C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll

    $ie = new-object -com InternetExplorer.Application

    $ie.Navigate("ya.ru")

    $ie.Document.body | Get-Member GetE*

     

    Get-Member : Укажите объект для командлета Get-Member.строка:4 знак:21

    + $ie.Document.body | Get-Member GetE*

    +                     ~~~~~~~~~~~~~~~~

        + CategoryInfo          : CloseError: (:) [Get-Member], InvalidOperationException

        + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand

     

    PS C:\WINDOWS\system32> 

    18 августа 2017 г. 11:31
  • Заменить ya.ru на внутренний сайт.
    18 августа 2017 г. 11:47
    Отвечающий
  • Ошибка таже
    18 августа 2017 г. 11:57