Powershell正在将数据输入网站-在GetElementByName上找不到属性值

Powershell正在将数据输入网站-在GetElementByName上找不到属性值,powershell,Powershell,我正在使用下面的代码与工作中的html网站进行交互,但是当我尝试运行该部分时,第一个登录的部分可以工作 ($ie.document.getElementsByName("textSearch") | select -first 1).value = "12345"; 我得到以下错误 在此对象上找不到属性“value”。验证该属性是否存在并且可以设置。 在C:\Users\lawsod03\desktop\powershell\DCS remove.ps1

我正在使用下面的代码与工作中的html网站进行交互,但是当我尝试运行该部分时,第一个登录的部分可以工作

($ie.document.getElementsByName("textSearch") | select -first 1).value = "12345";
我得到以下错误


在此对象上找不到属性“value”。验证该属性是否存在并且可以设置。

在C:\Users\lawsod03\desktop\powershell\DCS remove.ps1:23 char:1

+($ie.document.getElementsByName(“businessArea”)|选择-第一个1.value=“MCS\U C…”

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

+CategoryInfo:InvalidOperation:(:)[],运行时异常

+FullyQualifiedErrorId:PropertyNotFound

这是我当前试图添加值的输入字段

<td class="td_prompt">
    <input name="textSearch" value="">&nbsp;by
</td>
我在网上搜索了一个解决方案,但似乎找不到一个能为我指明方向的解决方案


非常感谢您的帮助。

不要使用
选择-f 1
更改您的格式以执行以下强制反引用操作(我还简化了您的代码):

这是因为
getElementsByName()
返回元素列表(虽然不是在传统数组中,因此
@()
强制转换将其转换为PowerShell数组,然后您可以像普通数组一样取消引用)


这有帮助吗?

Hi@AP,感谢您的回复登录时的密码部分起作用并查找元素,但代码导航到www.website.com/usersearch时,在那里尝试按名称获取元素时,我发现错误,我认为我正确使用了您的代码,但是我对powershell非常陌生,请您见鬼,我使用了函数getEl($ie,$name){return@($ie.document.getElementsByName($name))[0]}(getEl'textSearch')。value=“12345”刚刚修复了我的答案,在调用
getEl()
时忘了包含
$ie
变量,很抱歉没有看到您的响应。它对登录部分有效,但对“textSearch”不起作用“框我得到下面的错误您不能对空值表达式调用方法。在C:\Users\lawsdo03\desktop\powershell\DCS-remove2.ps1:15字符:39+函数getEl($ie,$name){return@($ie.document.getElementsByName($name))[0]}+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:无效操作:(:),RuntimeException+FullyQualifiedErrorId:InvokeMethodUnlull在此对象上找不到属性“value”。验证该属性是否存在并可以设置。位于C:\Users\lawsdo03\desktop\powershell\DCS-remove2.ps1:24字符:1+(getEl$ie'textSearch')。值=$username+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:无效操作:(:)[],运行时异常+完全合格的错误ID:PropertyNotFound
cls
$username = "user";
$password = "pass";
$loginUrl = "www.website.com/login";
$MainCSA = "www.website.com/usersearch";
$iterator = 1;

#initialize browser
$ie = New-Object -com internetexplorer.application;
$ie.visible = $true;
$ie.navigate($loginUrl);
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 1; } #wait for browser idle

#login
($ie.document.getElementsByName("username") |select -first 1).value = $username;
($ie.document.getElementsByName("password") |select -first 1).value = $password;
($ie.document.getElementsByName("submit") |select -first 1).click();
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 1; }    #wait for browser idle

#navigate to maintain CSA
$ie.navigate($MainCSA);
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 1; }    #wait for browser idle
($ie.document.getElementsByName("textSearch") |select -first 1).value = "12345";
function getEl ($ie, $name) {return @($ie.document.getElementsByName($name))[0]}
(getEl $ie 'username').value = $username
(getEl $ie 'password').value = $password
(getEl $ie 'submit').click()