如何在python中找到执行javascript的可变html元素
我正在尝试使用2Captcha服务来解决h验证码V2 工作原理如下:如何在python中找到执行javascript的可变html元素,javascript,python,bots,recaptcha,2captcha,Javascript,Python,Bots,Recaptcha,2captcha,我正在尝试使用2Captcha服务来解决h验证码V2 工作原理如下: 你得到一个值来解验证码 然后在HTML代码中找到一个textarea元素来插入该值(这是我的问题) 在该元素中插入值 您按下提交按钮,验证码被解决 首先,我将展示一个工作示例,然后我将展示我遇到的问题 这是查找和插入获得的值的HTML代码: textarea id="h-captcha-response" name="h-captcha-response" style="dis
textarea id="h-captcha-response" name="h-captcha-response" style="display: none;"></textarea>
这正是让你从中受益的原因:
这就是结果:
最后你按下提交按钮,它就完成了。这个例子有效
这是我的问题:
在我的例子中,HTML文档有一个变量ID,如下所示:
<textarea id="h-captcha-response-0tesbrpxsk8" name="h-captcha-response" style="display: none;"></textarea>
我在这里被绊住了,尝试了其他方法,但没有成功,因为我可能是因为我没有很好地实施这些解决方案,或者它们根本不起作用
我将感谢您的一些见解,谢谢您尝试以下内容:
const textarea=document.querySelector('[id^=“h-captcha-response-“]”)
textarea.value=“这在textarea内部!”
试试这个:
const textarea=document.querySelector('[id^=“h-captcha-response-“]”)
textarea.value=“这在textarea内部!”
这将填写所有这些内容(recaptcha/hcaptcha):
这将填写所有这些内容(recaptcha/hcaptcha):
是的,使用querySelector()似乎更灵活,谢谢,但请注意,我使用的是python,我尝试了以下方法:
insert\u solver='document.querySelector(\'[id^=“h-captcha-response-“]\')。innerHTML=“'+result+”;'代码>驱动程序。执行脚本(插入解算器)
否success@V-现金将innerHTML
替换为value
,就像我在回答中写的那样。不,innerHTML/InnerText就在这里。@pguardiario您应该在这里使用.value作为参考:它不起作用的一个原因是验证码中的其他javascript。我确信谷歌在某种程度上保护了这种简单的操作。不,在这种情况下,值是错误的属性。但是innerHTML非常有效使用querySelector()似乎更灵活,谢谢,但请注意我使用的是python,我尝试了以下方法:insert\u solver='document.querySelector(\'[id^=“h-captcha-response-“]\')。innerHTML=“+result+”;'代码>驱动程序。执行脚本(插入解算器)
否success@V-现金将innerHTML
替换为value
,就像我在回答中写的那样。不,innerHTML/InnerText就在这里。@pguardiario您应该在这里使用.value作为参考:它不起作用的一个原因是验证码中的其他javascript。我确信谷歌在某种程度上保护了这种简单的操作。不,在这种情况下,值是错误的属性。但是innerHTML可以工作,我得到了这个错误selenium.common.exceptions.JavascriptException:Message:javascript错误:意外的标记“…”
我在没有。。。但随后又出现了另一个语法错误这在最新的chromiumYes中有效,显然有一个cloudlflare在后面做其他事情,所以很难看到结果。感谢您收到此错误selenium.common.exceptions.JavascriptException:Message:javascript错误:意外标记“…”
我在没有。。。但随后又出现了另一个语法错误这在最新的chromiumYes中有效,显然有一个cloudlflare在后面做其他事情,所以很难看到结果。谢谢
<textarea id="h-captcha-response-0tesbrpxsk8" name="h-captcha-response" style="display: none;"></textarea>
document.getElementByTagName("textarea").innerHTML=".....
driver.execute_script('''
let [captcha] = arguments
[...document.querySelectorAll('[name="h-captcha-response"],[name="g-recaptcha-response"]')].map(el => {
el.innerHTML = captcha
})
''', value)