Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Qwebview和python中单击文本区域_Javascript_Python_Qwebview_Qwebelement - Fatal编程技术网

Javascript 如何在Qwebview和python中单击文本区域

Javascript 如何在Qwebview和python中单击文本区域,javascript,python,qwebview,qwebelement,Javascript,Python,Qwebview,Qwebelement,我正在使用带有python的QWebView来创建一个自动化应用程序,我可以通过标记和id选择Qwebelements,也可以很容易地单击按钮,但我不能执行以下操作 -单击标记为“Textarea”的元素以准备插入数据 -向textrea元素发送键 page = webview.page().mainFrame() doc = page.documentElement() username = doc.findFirst("input[id=email]") username.setAttrib

我正在使用带有python的QWebView来创建一个自动化应用程序,我可以通过标记和id选择Qwebelements,也可以很容易地单击按钮,但我不能执行以下操作 -单击标记为“Textarea”的元素以准备插入数据 -向textrea元素发送键

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()')
下面是我可以填写表单的代码示例,但它不适用于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()')

#这是在获得按钮元素后的一个,如上所述的元素聚焦:

元素聚焦:

您正试图“聚焦”一个元素,这意味着输入将进入该元素。 要集中注意力,请尝试以下方法:

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”。
两者之间的区别是。

对于像“facebook群组文本区域”这样的聚焦文本区域元素,使用“txtarea.evaluateJavaScript(“this.focus()”)而不是“this.click()”)
这对我有效

谢谢你的回复,但是setattribute对我有效,我想问的是:当我得到元素时,是单击它,例如facebook群组中的文本区域,我可以找到它,但在尝试单击它时出错,所以它打开了,并且出现了“发布”按钮哦,我想你尝试的是“聚焦”“那么元素。我将编辑我的答案。