Powershell IE对象查找正确的元素

时间:2017-06-03 16:00:16

标签: powershell internet-explorer

我正在尝试访问弹出窗口的元素,该窗口似乎嵌入在iframe中。下面是我正在处理的HTML。我感兴趣的这一行是......好的...... / a> 。我已经留下了一些html,因为它相当大,我不认为它会有所帮助。如果需要我可以发帖。我尝试了很多组合来访问它,但到目前为止没有任何东西可以获得OK按钮。以下是我最好的猜测代码,不起作用。

$ie.Document.getElementsByTagName("A") | Where {$_.getAttributeNode 
('class').Value -eq 'btn btn3d PopupBtn'} 
<html>
<head>...</head>
  <body>
    <iframe id="12345"src="https://example.com/html/messagepopup.html"  
     frameborder="0" style="width:100%; height: 154px;">
     <!-- COMMENT HERE about the software
     -->
     <html>
     <head>
     <link href="https://example.com/path/to/custompage.css"rel=stylesheet">
     </link>
     </head>
     <body class="popupmsg" onload="onload()">
     <div class="PopupMsgFooter" id="PopupMsgFooter">
     <a class="btn bnt3d PopupBtn" href="#" arid="2"arwindowid="0">OK</a>
     </body>
     </html>
     </iframe>   
 </body>
</html> 

2 个答案:

答案 0 :(得分:1)

这是最终答案。非常接近下面,但我的最终答案是错综复杂的。我在这个HTML DOC中有两个iframe,由于某种原因,通过src搜索不会返回正确的结果。相反,我不得不消除另一个。很奇怪,但有效。第二行是一个混蛋的东西。我用Google搜索,发现尝试内容窗口可能会有效。经过多次迭代后,我想出了下面这一行。我不得不使用contentwindow而不是contentdocument。 (任何人都知道为什么??)我还需要更改where子句,因为在同一个类名下有两个按钮。我这里的独特价值是干旱。一旦我获得了对正确对象的引用,就很容易看到所需的更改。对于wOxxOm来说真的很严重......

$iframe =  $ie.Document.getElementsByTagName('iframe') 
    | Where { $_.id -notcontains 'pinghtml' }

$ok = $iframe.contentwindow.document.body.getElementsByTagName('a') 
    | Where {$_.getAttributeNode('arid').Value -eq '2'}

$ok.click()

答案 1 :(得分:0)

按钮位于iframe内,iframe有自己独立的DOM。

  1. 找到JFrame frame = new JFrame("malario"); frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setSize(700, 700); JPanel panel = new JPanel(); panel.setLayout(null); panel.setBackground(Color.blue); JLabel malario = new JLabel("Malario"); malario.setOpaque(true); malario.setBackground(Color.green); panel.add(malario); malario.setBounds(100, 550, 50, 50); JLabel platform = new JLabel(); platform.setOpaque(true); platform.setBounds(0,600,700,50); panel.add(platform); frame.setContentPane(panel); frame.addKeyListener(new KeyListener() { int originalx = 100; int originaly = 550; int currentlocx = originalx; int currentlocy = originaly; @Override public void keyTyped(KeyEvent e) { } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_RIGHT){ malario.setBounds(currentlocx+10,currentlocy , 50, 50); currentlocx = currentlocx+10; } if(e.getKeyCode()==KeyEvent.VK_LEFT){ malario.setBounds(currentlocx-10,currentlocy , 50, 50); currentlocx = currentlocx-10; } int jumpy=0; if(e.getKeyCode()==KeyEvent.VK_UP){ jumpy= currentlocy-100; while(jumpy!=currentlocy){ malario.setBounds(currentlocx,currentlocy-10 , 50, 50); try { Thread.sleep(1); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } currentlocy = currentlocy-10; } } } }); } public static int Time(){ return (int)System.currentTimeMillis(); } } 元素
  2. 找到iframe iframe
  3. 中的按钮

    contentDocument