3

는 웹 UI 자동화를 위해 powershell을 사용했습니다. 예외가 발생했습니다 : [System .__ ComObject]에 "click"메서드가 없으므로 invoke 메서드가 실패했습니다.powershell : "제출 유형"입력을 클릭하는 방법

제출할 입력을 제출할 수 있습니까?

getElementsByTagName getElementsByClassName getElementsByName을 사용했지만 작동하지 않습니다.

누구나 나를 도울 수 있습니까?

파워 쉘 코드는 다음과 같습니다 :

# open the specified web site and commit the key 
$ie = new-object -com "InternetExplorer.Application" 
$ie.navigate("http://gitlab.alibaba-inc.com/keys/new") 
$ie.visible = $true 
while($ie.busy) {sleep 1} 

$doc = $ie.document 

# commit the button 
$commit = $doc.getElementsByTagName("commit") 

if($commit) 
{$commit.click()} 

HTML 소스는 다음과 같습니다 : 당신은 잘못된 요소를 찾고

<!DOCTYPE html> 
<html lang='en'> 
<head> 
<meta charset='utf-8'> 
<title> 
Profile | 
GitLab 
</title> 
<link href="/assets/favicon-4b751da746de7855d7eb8123072388ed.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" /> 
<link href="/assets/application-a9eac7f5b0c3b922de8997ae9ad74ab0.css" media="screen" rel="stylesheet" type="text/css" /> 
<script src="/assets/application-61398d184a36e6ae900134f123d5d649.js" type="text/javascript"></script> 
<meta content="authenticity_token" name="csrf-param" /> 
<meta content="9SLFk6AwlsN2FoyO8xPY+M1hEbKfqlLTQ4CSDVc4efE=" name="csrf-token" /> 
<script type="text/javascript"> 
//<![CDATA[ 
window.gon = {};gon.default_issues_tracker="gitlab";gon.api_version="v3";gon.api_token="xkMg31Ssva322SDF cgxY";gon.gravatar_url="http://www.gravatar.com/avatar/%{hash}?s=% {size}&d=mm";gon.relative_url_root=""; 
//]]> 
</script> 

</head> 

<body class='ui_basic profile' data-page='keys:new'> 
<header class='navbar navbar-static-top navbar-gitlab'> 
<div class='navbar-inner'> 
<div class='container'> 
<div class='app_logo'> 
<span class='separator'></span> 
<a href="/" class="home has_bottom_tooltip" title="Dashboard"><h1>GITLAB</h1> 
</a><span class='separator'></span> 
</div> 
<h1 class='project_name'>Profile</h1> 
<ul class='nav'> 
<li> 
<a> 
<div class='hide turbolink-spinner'> 
<i class='icon-refresh icon-spin'></i> 
Loading... 
</div> 
</a> 
</li> 
<li> 
<div class='search'> 
<form accept-charset="UTF-8" action="/search" class="navbar-form pull-left" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div> 
<input class="search-input" id="search" name="search" placeholder="Search" type="text" /> 
<input id="group_id" name="group_id" type="hidden" /> 
<input id="repository_ref" name="repository_ref" type="hidden" /> 

<div class='search-autocomplete-json hide' data-autocomplete-opts='[{"label":"project: kelude2","url":"/kelude2"},{"label":"My Profile","url":"/profile"},{"label":"My SSH Keys","url":"/keys"},{"label":"My Dashboard","url":"/"},{"label":"Admin Section","url":"/admin"},{"label":"help: API Help","url":"/help/api"},{"label":"help: Markdown Help","url":"/help/markdown"},{"label":"help: Permissions Help","url":"/help/permissions"},{"label":"help: Public Access Help","url":"/help/public_access"},{"label":"help: Rake Tasks Help","url":"/help/raketasks"},{"label":"help: SSH Keys Help","url":"/help/ssh"}, {"label":"help: System Hooks Help","url":"/help/system_hooks"},{"label":"help: Web Hooks Help","url":"/help/web_hooks"},{"label":"help: Workflow Help","url":"/help/workflow"}]'> </div> 
</form> 

</div> 

</li> 
<li> 
<a href="/public" class="has_bottom_tooltip" data-original-title="Public area" title="Public area"><i class='icon-globe'></i> 
</a></li> 
<li> 
<a href="/s/heyun" class="has_bottom_tooltip" data-original-title="Public area" title="My snippets"><i class='icon-paste'></i> 
</a></li> 
<li> 
<a href="/projects/new" class="has_bottom_tooltip" data-original-title="New project" title="Create New Project"><i class='icon-plus'></i> 
</a></li> 
<li> 
<a href="/profile" class="has_bottom_tooltip" data-original-title="Your profile" title="My Profile"><i class='icon-user'></i> 
</a></li> 
<li> 
<a href="https://stackoverflow.com/users/sign_out" class="has_bottom_tooltip" data-method="delete" data-original-title="Logout" rel="nofollow" title="Logout"><i class='icon-signout'></i> 
</a></li> 
<li> 
<a href="/u/heyun" class="profile-pic"><img alt="F3ea5164088694b48e4980e52d831927? s=26&amp;d=mm" src="http://www.gravatar.com/avatar/f3ea5164088694b48e4980e52d831927? s=26&amp;d=mm" /> 
</a></li> 
</ul> 
</div> 
</div> 
</header> 

<div class='flash-container'> 
</div> 

<nav class='main-nav'> 
<div class='container'><ul> 
<li class="home"><a href="/profile" title="Profile"><i class='icon-home'></i> 
</a></li><li class=""><a href="/profile/account">Account</a> 
</li><li class=""><a href="/profile/notifications">Notifications</a> 
</li><li class="active"><a href="/keys">SSH Keys 
<span class='count'>1</span> 
</a></li><li class=""><a href="/profile/design">Design</a> 
</li><li class=""><a href="/profile/history">History</a> 
</li></ul> 
</div> 
</nav> 
<div class='container'> 
<div class='content'><h3 class='page_title'>Add an SSH Key</h3> 
<hr> 
<div> 
<form accept-charset="UTF-8" action="/keys" class="new_key" id="new_key" method="post"> <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="9SLFk6AwlsN2FoyO8xPY+M1hEbKfqlLTQ4CSDVc4efE=" /></div><div class='clearfix'> 
<label for="key_title">Title</label> 
<div class='input'><input id="key_title" name="key[title]" size="30" type="text" /> </div> 
</div> 
<div class='clearfix'> 
<label for="key_key">Key</label> 
<div class='input'> 
<textarea class="xxlarge thin_area" cols="40" id="key_key" name="key[key]" rows="20"> 
</textarea> 
<p class='hint'> 
Paste your public key here. Read more about how generate it 
<a href="/help/ssh">here</a> 
</p> 
</div> 
</div> 
<div class='actions'> 
<input class="btn btn-save" name="commit" type="submit" value="Save" /> 
<a href="/keys" class="btn btn-cancel">Cancel</a> 
</div> 
</form> 

</div> 

<script> 
    $('#key_key').on('keyup', function(){ 
    var title = $('#key_title'), 
     val  = $('#key_key').val(), 
     key_mail = val.match(/([a-zA-Z0-9._-][email protected][a-zA-Z0-9._-]+|\.[a-zA-Z0-9._-]+)/gi); 

    if(key_mail && key_mail.length > 0 && title.val() == ''){ 
     $('#key_title').val(key_mail); 
    } 
    }); 
</script> 
</div> 
</div> 
</body> 
</html> 

답변

2

. getElementsByTagName()이라는 태그 이름이 (input)이고, 태그 이름의 값이 이 아니고 (commit)이 아닌 값을 찾고 있습니다. 또한 getElementsByTagName()은 COM 개체 컬렉션을 반환합니다. 일치하는 태그가 없더라도이 메서드는 여전히 컬렉션 (0 요소 포함)을 반환합니다.

$commit = $doc.getElementsByTagName("input") 
if ($commit.Length -gt 0) { 
    $commit.item(0).click() 
} 

또는 컬렉션에서 찾고있는 이름을 가진 요소 필터링 :

$commit = $doc.getElementsByTagName("input") | ? { $_.name -eq "commit" } 
if ($commit) { $commit.click() } 
+0

$를 _()을 클릭하여 오류를 얻을 :. 널 값 식의 오류에 대한 메소드를 호출 할 수 없습니다; 첫 번째 시도 "$ commit.item (0) .click()"은 나를 위해 작동하지 않으며 오류도없고 버튼을 클릭하지도 않습니다. – max

+1

내 실수. 두 번째 예제에서'$ commit.click()'이되어야한다. 자동 변수'$ _'는 그 문맥에 입력되지 않습니다. UR 빠른 응답을위한 –

+0

thnx, 그것은 나를 위해 작동합니다. mmmmmmmmmuch 고마워. – max

0

내가 할 수있는을 당신은 Length 속성을 확인하고 컬렉션의 첫 번째 요소에 액세스하려면 다음 중 하나를 필요 위에 나열된 URL에 액세스하지 않도록 MIT 웹 사이트를 사용하여 어떻게 수행 할 수 있는지 보여주었습니다.

# setup 
$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$true 

$ie.navigate("http://web.mit.edu/") 
while($ie.ReadyState -ne 4) {start-sleep -m 100} 

$termsField = $ie.document.getElementsByName("terms") 
@($termsField)[0].value ="powershell" 


$submitButton = $ie.document.getElementsByTagName("input") 
Foreach($element in $submitButton) 
{ 
    #look for this field by value this is the field(look for screenshot below) 
    if($element.value -eq "Search"){ 
    Write-Host $element.click() 
    } 
} 

    Start-Sleep 10 

enter image description here