使用javascript模拟在文本区域中输入密钥以实现自动化,没有jQuery

时间:2017-07-28 15:42:57

标签: javascript google-chrome automation

我正在构建一个自动化工具,我试图自动化一些评论。 我面临的问题是我无法提交"评论。

我可以在textarea中获取评论/文本,我已经尝试过.submit()但它只是重新加载页面,并没有实际提交评论。我认为实际提交是由enter keypress触发的。

我尝试做.focus()然后模拟回车键,但它没有工作。 另一个问题可能是我在浏览器控制台中运行此代码,而我无法专注于textarea。我可能错了。

此外,textarea没有ID,只有一个类。我尝试使用纯JS,没有jQuery。



function enter1() {
    var commentEl = document.querySelector("._2hc0g");

   var keyboardEvent = document.createEvent('KeyboardEvent');
   delete keyboardEvent.which;
   var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? 'initKeyboardEvent' : 'initKeyEvent';
   keyboardEvent[initMethod](
     'keydown', // event type : keydown, keyup, keypress
     true, // bubbles
     true, // cancelable
     window, // viewArg: should be window
     false, // ctrlKeyArg
     false, // altKeyArg
     false, // shiftKeyArg
     false, // metaKeyArg
     13, // keyCodeArg : unsigned long the virtual key code, else 0
     13 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
   );
   console.log("beefore querySelector");
   commentEl.focus();
   document.querySelector("._2hc0g").dispatchEvent(keyboardEvent);
   if(document.querySelector("._2hc0g").dispatchEvent(keyboardEvent)){
    console.log("key event worked");
   }
   console.log("after querySelector");
 }

function doComment() {
    var textAreaElement = $("textarea._2hc0g");
    var commentEl = document.querySelector("._2hc0g");

    
    textAreaElement.value = "Great photo here! I love it :)";
    commentEl.focus();
    enter1();
}
doComment();




0 个答案:

没有答案