2012-09-26 36 views
0

我正试图自动化我们的目录同步过程。基本上我需要登录到网站,搜索用户,然后单击编辑更改三个设置,但出于某种原因,我无法使PowerShell单击编辑。 <a href="/User/Details><a href="/User/Edit/从不改变,但其余的改变取决于用户。使用PowerShell单击超链接

<td>domain.com.com/OU/lastname, firstname</td> 
    <td>username</td> 
    <td>firstname</td> 
    <td></td> 
    <td>Pinar</td> 
    <td></td> 
    <td>00334764</td> 
    <td>8/1/2012 5:53:45 PM</td> 
    <td><a href="/User/Details/sajskjdf-ajsjkf-asddd">Details</a></td> 
    <td><a href="/User/Edit/sajskjdf-ajsjkf-asddd">Edit</a></td> 
</tr> 

这是到目前为止我的代码:

#login to site 
$url = "https://website" 
$username = 'username' 
$password = read-host "password" 
$ie = New-Object -com internetexplorer.application; 
$ie.visible = $true; 
$ie.navigate($url); 

while ($ie.Busy -eq $true) 
{ 
    Start-Sleep -Milliseconds 100; 
} 

$ie.Document.getElementById("username").value = $username 
$ie.Document.getElementById("Password").value = $password 
$go = $ie.Document.getElementsByTagName(‘button’) | where-object {$_.type -eq ‘submit’} 
$go.click() 

while($ie.Busy) {Start-Sleep 1} 

# Enter the username you want to edit 
$logonname=read-host "logonname" 
$ie.Document.getElementById("query").value = $logonname 
$go2 = $ie.Document.getElementsByTagName(‘button’) | where-object {$_.type -eq ‘submit’} 
$go2.click() 

while($ie.Busy) {Start-Sleep 1} 

# I can't make this part work :(
$go3 = $ie.Document.getElementsByTagName(‘A’) 
$yt = $go3 | where-object {$_.innerText -eq '/Edit/User/'} 
$yt.click() 
+1

你需要更具体。目标是自动化网络浏览器?或者从文本文件中读取HTML,找到所有hrefs并加载它们?你是否试图在浏览器中加载它们或者直接下载它们的内容? – latkin

回答

2

这里是点击一个特定链接的例子:

$ie = New-Object -ComObject InternetExplorer.Application 
$ie.visible=$true 
$ie.navigate2('http://google.com/') 
while($ie.Busy) {Start-Sleep 1} 
$links = $ie.Document.getElementsByTagName('A') 
$yt = $links | where {$_.innerText -eq 'YouTube'} 
$yt.click() 
+0

嗨,谢谢,链接因用户而异。所以对于每个用户来说,这部分总是会有所不同。详细信息 – Nomac

+1

Shay的代码示例检查链接*文本*,而不是链接*引用*。如果文字*和*参考文字发生变化:您如何识别您想要点击的链接? –

+0

什么使该链接独一无二?它总是位于同一个地方,就像一个特定的表格单元格索引一样? –