2014-10-25 2 views
0
<a class="button" style="letter-spacing: -1px" href="/home" data-executing="0">Go Home</a>  

Я пытаюсь получить Awesomium нажать определенную кнопку, Брать пример выше нет ID только тегAwesomium нажмите на тег C#

<a - and attribute being Go Home 

Я читал о том, как это сделать и они говорят, что используют это:

web.ExecuteJavascript(@"$('a').trigger('click');");  

Это не работает для меня, это не дает щелчка. Это может быть потому, что мой тестовый сайт имеет много тегов с помощью

<a  

Есть ли способ, чтобы нажать на эту кнопку, используя атрибут «в» быть «Go Home» в Awesomium? Я также попробовал это, и это тоже не получилось:

 private void timer_Tick(object sender, EventArgs e) 
    { 

     if (web.IsDocumentReady) 
     { 

      dynamic document = web.ExecuteJavascriptWithResult("document"); 
      dynamic submit = document.getElementsByTagName('a'); 
      submit.Invoke("click"); 
     } 
    }  
+0

Вы пробовали 'document.getElementsByTagName ('a') [0] .click();'? Конечно, если вам нужно сначала '' click ... – Regent

+0

Это отлично подходит для браузера по умолчанию, но это не работает для awesomium, потому что awesomium не содержит определения для документа. Я уже пробовал это. – newbie2614

+0

Также, если вы имели в виду 'web.ExecuteJavascript (" document.getElementsByTagName ('a') [0] .click() ");' Это тоже не работает. Он не показывает ошибок, но ничего не делает. – newbie2614

ответ

2

Если этот элемент не является <button> это, вероятно, не метод click().

Вы можете попробовать это, чтобы проверить это:

JSObject btn = web.ExecuteJavascriptWithResult("document.getElementsByTagName('a')[0]"); 
if (btn.HasMethod("click")) 
    btn.Invoke("click"); 
else 
    // no such method 

или с использованием динамического (выбросит исключение, если метод не существует):

dynamic btn = (JSObject) web.ExecuteJavascriptWithResult("document.getElementsByTagName('a')[0]"); 
btn.click(); 

Вы можете использовать это для щелкать такие элементы :

public void JsFireEvent(string getElementQuery, string eventName) 
{ 
    web.ExecuteJavascript(@" 
         function fireEvent(element,event) { 
          var evt = document.createEvent('HTMLEvents'); 
          evt.initEvent(event, true, false); // event type,bubbling,cancelable 
          element.dispatchEvent(evt);         
         } 
         " + String.Format("fireEvent({0}, '{1}');", getElementQuery, eventName)); 
} 

Примеры:

JsFireEvent("document.getElementsByTagName('a')[0]", "click"); 

JsFireEvent("document.getElementsByTagName('a')[0]", "mouseup"); 

Кроме того, вы можете найти эти две простые вспомогательные классы полезны: https://gist.github.com/AlexP11223/8286153

Первый extension methods для WebView/WebControl и второй из них имеет некоторые статические методы для генерации JS код для извлечения элементов (JSObject) с помощью XPath + получение координат JSObject)

 Смежные вопросы

  • Нет связанных вопросов^_^