我正在尝试通过javascript在网页中模拟键盘事件,因为Safari浏览器不支持Actions。
首先,我创建了一个简单的表单(如下所示),并试图通过文本框进行选项卡,但它不起作用。
使用的Java脚本:( ubuntu和chrome浏览器)。我在Chrome浏览器控制台中解雇了该脚本。
var pressTabKey = document.createEvent("KeyboardEvent");
pressTabKey.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 9, 0);
document.getElementById('1234').focus();
document.getElementById('1234').dispatchEvent(pressTabKey);
HTML表单:
<html>
<head>
</head>
<body>
<p>Test Page </p>
<form>
<input id="1234" type="text" value="Enter Here">
<br>
<br>
<input id="1235" type="text" value="Enter Here">
</form>
</body>
</html>
答案 0 :(得分:3)
希望这会有所帮助:
https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events
实施例: 我创建一个事件并使用dispatchEvent()来触发它:
var pressTabKey = new Event('keydown');
document.getElementById('1234').addEventListener('keydown', function() { alert("hi!"); });
document.getElementById('1234').dispatchEvent(pressTabKey);
不推荐使用函数createEvent(): https://developer.mozilla.org/en-US/docs/Web/API/Document/createEvent
编辑:
你可以简单地从keydown或keypress事件中读取密钥代码,如下所示:
http://jsfiddle.net/adrielD/me9q1qu6/
HTML
<p>Test Page </p>
<form>
<input id="1234" type="text" value="Enter Here"><br>
<input id="1235" type="text" value="Enter Here">
</form>
JS:
var tab1 = document.getElementById("1234");
var tab2 = document.getElementById("1235");
tab1.addEventListener("keydown", function(event) {
if(event.keyCode == 9) {
event.preventDefault();
tab2.focus();
}
});
tab2.addEventListener("keydown", function(event) {
if(event.keyCode == 9) {
event.preventDefault();
tab1.focus();
}
});
答案 1 :(得分:2)
如果您碰巧加载了jQuery,可以这样做:
if (redCopper.hitTestObject(currentWires) && currentWires.color== "RED")
{
//trace("HIT_ RED");
hasRedWire = false;
redCopper.removeEventListener(MouseEvent.MOUSE_DOWN, redWireFunction);
redWire.removeEventListener(MouseEvent.MOUSE_UP, redWireFunction);
trace("HIT");
}
if (blueCopper.hitTestObject(currentWires) && currentWires.color== "BLUE")
{
//trace("HIT_BLUE");
hasBlueWire = false;
blueCopper.removeEventListener(MouseEvent.MOUSE_DOWN, blueWireFunction);
blueWire.removeEventListener(MouseEvent.MOUSE_UP, blueWireFunction);
trace("HIT");
}
你的例子是:
<target name="wsdl2java">
<java classname="org.apache.axis.wsdl.WSDL2Java" classpathref="DSSClient.classpath" failonerror="true" fork="true">
<arg value="${wsdl.url}/DEX_august_2015.wsdl" />
<arg line="-v -D -a" />
<arg line="-o ${wsdl.url}/generated" />
<arg line="-O -1" />
</java>
</target>
有关完整文档,请参阅http://api.jquery.com/trigger/。
答案 2 :(得分:0)
我遇到了完全相同的问题,尝试了很多东西,并最终使用layer
来触发键盘事件(以及一些鼠标事件)。我只是找不到任何只有硒的解决方案。但AHK仅适用于Windows。如果您在其他平台上使用selenium,例如Mac OS,请查看AHK。
使用AHK,按键操作相当容易,在设置焦点后,只需启动AHK脚本,您可以在其中发送密钥':
Sub URLtoPDF()
Dim DocPath As String
Dim DocNumber As Integer
Dim MsgBoxCompleted
Range("A1").Select
DocNumber = 1
Do Until IsEmpty(ActiveCell)
Dim AppWord As Word.Application
Set AppWord = CreateObject("Word.Application")
AppWord.Visible = False
ActiveCell.Copy
DocPath = "C:\docs\url" & DocNumber & ".pdf"
'Create and save pdf
AppWord.Documents.Add
AppWord.Selection.Paste
AppWord.ActiveDocument.SaveAs2 Filename:=DocPath, FileFormat:=wdFormatPDF
'Prepare for next loop
Application.CutCopyMode = False
AppWord.Quit (wdDoNotSaveChanges)
Set AppWord = Nothing
ActiveCell.Offset(1, 0).Select
DocNumber = DocNumber + 1
Loop
MsgBoxCompleted = MsgBox("Process complete.", vbOKOnly, "Process complete")
End Sub
AHK有一个完整的脚本语言,因此您可以将其包装在循环/条件中。如有必要,您还可以在特定位置模拟鼠标点击。