AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1579556
Accepted
Ravi Kumar
Ravi Kumar
Asked: 2020-08-22 01:33:32 +0800 CST2020-08-22 01:33:32 +0800 CST 2020-08-22 01:33:32 +0800 CST

在 Powershell 中执行时,语句块或类型定义中缺少关闭“}”

  • 772

我是PowerShell的新手。当我尝试执行以下代码时,出现错误:

“在语句块或类型定义中缺少结束 '}'。”

下面是代码,我不确定我在哪里失踪。

$path = "C:\Users\Dr.Salya\Downloads"
$filename = "rateonlyl-455.zip"

$url = "https://vertexinc.custhelp.com/app/utils/login_form"
$url2 = "https://download-ie.flexnetoperations.com/512175/1386/77/17129077/rateonlyl-455.zip?ftpRequestID=2321180473&server=download-ie.flexnetoperations.com&dtm=DTM20200820125043ODA0MDU5NDEz&authparam=1597953043_bf5ca04b9a74eeb53a272c20ea148517&ext=.zip/"

$ie = New-Object -com InternetExplorer.Application

$ie.visible = $true
$ie.silent = $false

$ie.navigate("$url")

while($ie.ReadyState -ne 4){start-sleep -m 100}
if ($ie.document.url -Match "invalidcert"){
$sslbypass=$ie.Document.getElementsByTagName("a") | where-object {$_.id -eq "overridelink"}
    $sslbypass.click()
    start-sleep -s 5
    }
 

$ie.Document.IHTMLDocument3_getElementById("username").click()
$ie.Document.IHTMLDocument3_getElementById("username").value ='********'
$ie.Document.IHTMLDocument3_getElementById("password").click()
$ie.Document.IHTMLDocument3_getElementById("password").value ='1234'
$ie.Document.IHTMLDocument3_getElementById("").click()

start-sleep 5

$ie.navigate($url2)

start-sleep 10

$ie.Document.body.outerHTML | Out-File -FilePath $path/$filename

错误:

You cannot call a method on a null-valued expression.
At C:\Users\Dr.Salya\Downloads\Vertex1.ps1:22 char:1
+ $ie.Document.IHTMLDocument3_getElementById("username").click()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
The property 'value' cannot be found on this object. Verify that the property exists and can be set.
At C:\Users\Dr.Salya\Downloads\Vertex1.ps1:23 char:1
+ $ie.Document.IHTMLDocument3_getElementById("username").value ='nnaisv ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound
 
You cannot call a method on a null-valued expression.
At C:\Users\Dr.Salya\Downloads\Vertex1.ps1:24 char:1
+ $ie.Document.IHTMLDocument3_getElementById("password").click()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
The property 'value' cannot be found on this object. Verify that the property exists and can be set.
At C:\Users\Dr.Salya\Downloads\Vertex1.ps1:25 char:1
+ $ie.Document.IHTMLDocument3_getElementById("password").value ='Vertex ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound
 
You cannot call a method on a null-valued expression.
At C:\Users\Dr.Salya\Downloads\Vertex1.ps1:26 char:1
+ $ie.Document.IHTMLDocument3_getElementById("").click()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
powershell internet-explorer
  • 1 1 个回答
  • 572 Views

1 个回答

  • Voted
  1. Best Answer
    postanote
    2020-08-22T19:08:41+08:002020-08-22T19:08:41+08:00

    您必须抓取页面以确保获得正确的对象/元素并一次执行一个用例。以及对象/元素是否具有解决用例所需的属性和方法。

    例如,只是让登录的东西工作。

    # $path     = "C:\Users\Dr.Salya\Downloads"
    # $filename = "rateonlyl-455.zip"
    
    $url  = "https://vertexinc.custhelp.com/app/utils/login_form"
    # $url2 = "https://download-ie.flexnetoperations.com/512175/1386/77/17129077/rateonlyl-455.zip?ftpRequestID=2321180473&server=download-ie.flexnetoperations.com&dtm=DTM20200820125043ODA0MDU5NDEz&authparam=1597953043_bf5ca04b9a74eeb53a272c20ea148517&ext=.zip/"
    
    $ie = New-Object -com InternetExplorer.Application
    
    $ie.visible = $true
    $ie.silent = $false
    $ie.navigate($url)
    while($ie.ReadyState -ne 4){start-sleep -m 100}
    
    if ($ie.document.url -Match "invalidcert")
    {
        $sslbypass = $ie.Document.getElementsByTagName('a') | 
                     where-object {$_.id -eq "overridelink"}
        $sslbypass.click()
        start-sleep -s 5
    }
     
    $ie.Document.forms | 
    Select-Object className, id, tagName, innerText, outerText 
    # Results
    <#
    className : rn_OpenLoginForm rn_OAuthForm
    id        : rn_OpenLogin_6_Info
    tagName   : FORM
    innerText :  
                
                What will happen:
                When you click on this button you will be taken to Yahoo. 
                Once you log in, Yahoo will verify you and send you back here where 
                you'll be logged in! 
    outerText :  
                
                What will happen:
                When you click on this button you will be taken to Yahoo. 
                Once you log in, Yahoo will verify you and send you back here where 
                you'll be logged in! 
    
    className : 
    id        : rn_LoginForm_7_Form
    tagName   : FORM
    innerText : Username (Your email address)
                
                Password
                
                 
    outerText : Username (Your email address)
                
                Password
    #>
    
    $ie.Document.forms.item('rn_LoginForm_7_Form') | 
    Select-Object -Property className, Name, id, Type, Value, ie9_tagName | 
    Format-Table -AutoSize
    # Results
    <#
    className name             id                      type     value  ie9_tagName
    --------- ----             --                      ----     -----  -----------
              Contact.Login    rn_LoginForm_7_Username text            INPUT      
              Contact.Password rn_LoginForm_7_Password password        INPUT      
                               rn_LoginForm_7_Submit   submit   Log In INPUT 
    #>
    
    
    $ie.Document.getElementById('rn_LoginForm_7_Username').Value = 'SomeUserName'
    $ie.Document.getElementById('rn_LoginForm_7_Password').Value = 'Password'
    $ie.Document.getElementById('rn_LoginForm_7_Submit').Click()
    

    ...然后像本网站一样转到下一页(如果有)。然而,由于我没有在此站点上使用的帐户,因此我无法执行和进一步的操作。然而,即使从登录页面中提取链接列表,对于任何后续页面都是相同的。

    $ie.Document.links | 
    ForEach-Object {
    [PSCustomObject]@{
        className   = $PSItem.className
        tagName     = $PSItem.tagName
        innerText   = $PSitem.innerText
        outerText   = $PSitem.outerText
        href        = $PSItem.href 
        ClickMethod = $PSItem.Click
    }}
    
    # Results
    <#
    
    className   : 
    tagName     : A
    innerText   :  | myVertex
    outerText   :  | myVertex
    href        : javascript:void
    ClickMethod : void click ()
    
    className   : rn_LoginProvider rn_Yahoo
    tagName     : A
    innerText   : Yahoo
    outerText   : Yahoo
    href        : javascript:void(0)
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   : Forgot your password?
    outerText   : Forgot your password?
    href        : https://vertexinc.custhelp.com/app/utils/account_assistance/session/L3RpbWUvMTU5ODA0OTI1Ni9nZW4vMTU5ODA0OTI1Ni9zaWQvZlU4S0VoTlNVd2lJVjh1bmZDcTVVUHFvWWRF
                  TFZOVDVPU3JNYXJWeWV3SXdsYSU3RUclN0VjQ3VOc1BTaWtxbGFmMkFKclY0bGZYcTZaa1B4T1g1cF9ISVhRbVpwaXF5c3ZQbUVIYVNjckhLR3ByazNYRDNfaDBQQVZXQSUyMSUyMQ%3D%3D
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   : Sign Up
    outerText   : Sign Up
    href        : https://vertexinc.custhelp.com/app/utils/create_account/redirect/utils%252Faccount_confirmation/session/L3RpbWUvMTU5ODA0OTI1Ni9nZW4vMTU5ODA0OTI1Ni9zaWQv
                  ZlU4S0VoTlNVd2lJVjh1bmZDcTVVUHFvWWRFTFZOVDVPU3JNYXJWeWV3SXdsYSU3RUclN0VjQ3VOc1BTaWtxbGFmMkFKclY0bGZYcTZaa1B4T1g1cF9ISVhRbVpwaXF5c3ZQbUVIYVNjckhLR3ByazNY
                  RDNfaDBQQVZXQSUyMSUyMQ%3D%3D
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   :  
    outerText   :  
    href        : https://vertexinc.custhelp.com/app/home/session/L3RpbWUvMTU5ODA0OTI1Ni9nZW4vMTU5ODA0OTI1Ni9zaWQvZlU4S0VoTlNVd2lJVjh1bmZDcTVVUHFvWWRFTFZOVDVPU3JNYXJWeWV3
                  SXdsYSU3RUclN0VjQ3VOc1BTaWtxbGFmMkFKclY0bGZYcTZaa1B4T1g1cF9ISVhRbVpwaXF5c3ZQbUVIYVNjckhLR3ByazNYRDNfaDBQQVZXQSUyMSUyMQ%3D%3D
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   : Privacy Policy
    outerText   : Privacy Policy
    href        : javascript:showPrivacyPolicy();
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   : Terms of Use
    outerText   : Terms of Use
    href        : javascript:showTerms();
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   :   Contact: 1-800-281-1900
    outerText   :   Contact: 1-800-281-1900
    href        : tel:1-800-281-1900
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   : 
    outerText   : 
    href        : https://www.facebook.com/vertexinc1/
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   : 
    outerText   : 
    href        : https://twitter.com/vertexinc
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   : 
    outerText   : 
    href        : https://www.linkedin.com/company/vertex-inc.
    ClickMethod : void click ()
    
    className   : 
    tagName     : A
    innerText   : 
    outerText   : 
    href        : https://www.youtube.com/user/vertexinc
    ClickMethod : void click ()         
    #>
    
    $ie.Document.links | 
    Select-Object -Property outerText, href
    # Results
    <#
    outerText             href                                                                                           
    ---------             ----                                                                                           
     | myVertex           javascript:void                                                                                
    Yahoo                 javascript:void(0)                                                                             
    Forgot your password? https://vertexinc.custhelp.com/app/utils/account_assistance                                    
    Sign Up               https://vertexinc.custhelp.com/app/utils/create_account/redirect/utils%252Faccount_confirmation
                          https://vertexinc.custhelp.com/app/home/                                                       
    Privacy Policy        javascript:showPrivacyPolicy();                                                                
    Terms of Use          javascript:showTerms();                                                                        
      Contact: 1-800-2... tel:1-800-281-1900                                                                             
                          https://www.facebook.com/vertexinc1/                                                           
                          https://twitter.com/vertexinc                                                                  
                          https://www.linkedin.com/company/vertex-inc.                                                   
                          https://www.youtube.com/user/vertexinc 
    #>
    
    
    $ie.Document.getElementsByTagName('A')[4] | 
    ForEach-Object {
    [PSCustomObject]@{
        className   = $PSItem.className
        id          = $PSItem.id
        tagName     = $PSItem.tagName
        innerText   = $PSitem.innerText
        outerText   = $PSitem.outerText
        href        = $PSItem.href 
        ClickMethod = $PSItem.Click
    }}
    # Results
    <#
    className   : 
    id          : 
    tagName     : A
    innerText   : Sign Up
    outerText   : Sign Up
    href        : https://vertexinc.custhelp.com/app/utils/create_account/redirect/utils%252Faccount_confirmation
    ClickMethod : void click ()
    #>
    
    
    ($ie.Document.getElementsByTagName('A') | 
    Where outerText -eq 'Forgot your password?').Click()
        
    ($ie.Document.getElementsByTagName('A') | 
    Where outerText -eq 'Sign Up').Click()
    

    最后一件事,您可以自动化允许它的站点。一些站点不允许对其属性(或其中的一部分)进行自动化,它们会主动对其进行编码以防止它发生。

    • 0

相关问题

  • 如何将变量字符串放入powershell中的数组?

  • Powershell 和正则表达式:Notepad++“保存时备份”文件列表。编辑名称,按上次写入时间排序

  • 将前景颜色添加到 Powershell 配置文件?

  • 禁用后无法启用 Microsoft Print to PDF

  • 我可以让这个 PowerShell 脚本接受逗号吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve