我正在尝试访问弹出窗口的元素,该窗口似乎嵌入在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>
答案 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。
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();
}
}
元素iframe
contentDocument