如何在Qwebview和python中点击文本区域
我正在用Python和QWebView创建一个自动化应用程序。我可以通过标签和ID来选择网页元素,也能轻松点击按钮,但我遇到了一些问题:
- 我无法点击标签为“Textarea”的元素,以便准备插入数据。
- 我也无法向文本区域元素发送输入内容。
下面是我用来填写表单的代码示例,但这个方法对文本区域元素不起作用:
page = webview.page().mainFrame()
doc = page.documentElement()
username = doc.findFirst("input[id=email]")
username.setAttribute('value', "user@user.com")
password = doc.findfirst("input[id=pass]")
bt.evaluateJavaScript('this.click()')
#这个代码是在获取按钮元素之后的代码
2 个回答
0
如果你想让像“Facebook 群组文本框”这样的文本区域获得焦点,可以用“txtarea.evaluateJavaScript("this.focus()")”来代替“this.click()”。这样做对我有效。
1
元素聚焦:
你想要“聚焦”一个元素,这意味着输入会发送到那个元素上。要实现聚焦,可以试试这个:
txtarea = self.documentElement.findFirst('textarea[name="someTextArea"]')
txtarea.evaluateJavascript('this.focus()')
设置属性与属性值:
最简单的方法就是用JavaScript直接设置‘textarea’的值,而不是直接设置属性。
举个例子:
txtarea = self.documentElement.findFirst('textarea[name="someTextArea"]')
txtarea.evaluateJavaScript('this.value="' + yourText + '";')
一些额外的细节:
‘setAttribute’没有起作用的原因是:你试图改变一个叫做‘value’的属性,而实际上你应该改变的是属性值‘value’。这两者之间的区别可以在这里找到解释。