如何使用pygtk + WebKit自动填充输入字段

时间:2014-06-10 09:00:42

标签: javascript python webkit gtk pygtk

我试图使用pygtk + WebKit自动进行谷歌搜索。如何在输入字段中插入一些搜索查询然后提交?执行javascript无效。

from gi.repository import WebKit
from gi.repository import Gtk, Gdk

def get_source(webobj, frame):
    web.execute_script("document.getElementById('gbqfq').value='test';")

win = Gtk.Window()

web = WebKit.WebView()
web.open("http://google.com")
web.connect("load-finished", get_source)
win.add(web)
win.show_all()
Gtk.main()

3 个答案:

答案 0 :(得分:1)

最后我得到了一些小改动。感谢@ user871199和@Syed

from gi.repository import WebKit
from gi.repository import Gtk, Gdk

def get_source(webobj, frame):
  doc = web.get_dom_document()
  element = doc.get_elements_by_name("q")
  child = element.item(0)
  child.set_value("test")
  SubBtn = doc.get_elements_by_name("btnG")
  btn = SubBtn.item(0)
  btn.click()

win = Gtk.Window()

web = WebKit.WebView()
web.open("http://google.com")
web.connect("load-finished", get_source)
win.add(web)
win.connect('destroy', lambda w: Gtk.main_quit())
win.show_all()
Gtk.main()

答案 1 :(得分:0)

为什么不能尝试这样?

from gi.repository import WebKit
from gi.repository import Gtk, Gdk

def get_source(webobj, frame):
    web.execute_script("document.getElementById('gbqfq').value='test';")
    web.execute_script("document.getElementById('gbqf').submit();")

win = Gtk.Window()

web = WebKit.WebView()
web.open("http://google.com/")
web.connect("load-finished", get_source)
win.add(web)
win.show_all()
Gtk.main()

你为什么试着这样做?使用WebKit进行搜索查询是否值得?

答案 2 :(得分:0)

见下文。

要查找python支持的方法和可用的对象,请在Ubuntu平台上查看文件/usr/share/gir-1.0/WebKit-3.0.gir。我不记得我是如何获得该文件的,但我认为如果安装了dev版本的库,它就会被安装。当您使用GIR及其相应的名称时,这将为您提供Webkit / python支持的所有API。

from gi.repository import WebKit
from gi.repository import Gtk, Gdk

def get_source(webobj, frame):
  doc = web.get_dom_document()
  element = doc.get_element_by_id("gbqfq")
  element.set_value("test");


win = Gtk.Window()

web = WebKit.WebView()
web.open("http://google.com")
web.connect("load-finished", get_source)
win.add(web)
win.show_all()
Gtk.main()