我试图用chromedp将输入元素的禁用属性设置为false。我可以用console chrome dev工具修改它的值,但在我的代码中没有实现。
我将解释这个输入的全部行为,以及为什么我需要它。
chromedp.Run(ctx,chromedp.SetValue("selectname=lstDoc",rcp,chromedp.ByQuery))如果err != nil { log.Fatal( err ) }
通常,您必须单击它,当您修改它的值时,它会自动更改我要针对的属性的禁用属性。起作用了。
dateDebut := "#txtDebutMAJ“err = chromedp.Run(ctx,chromedp.SetAttributeValue(dateDebut,"disabled","false",chromedp.ByQuery))如果err != nil { log.Fatal(err) }
我已经在false上使用headless运行chromedp,所以我可以清楚地看到元素仍然是禁用的,因为它总是灰色的。
我在控制台上尝试过的东西起了作用:
$("#txtDebutMAJ").disabled = false发布于 2021-03-02 13:17:37
最后,我找到了一个解决方案,使用了更少的代码,问题的根源如下,单击select不触发器是onchange属性,所以我使用了SendKeys函数。
这里有一篇关于这个问题的文章:https://github.com/chromedp/chromedp/issues/607
我使用的解决方案是:https://github.com/chromedp/chromedp/issues/8#issuecomment-602279477
作为结论,我使用了以下代码来设置select的值:
err = chromedp.Run(ctx, chromedp.SetValue("select[name=lstDoc]", rcp, chromedp.ByQuery))
if err != nil {
log.Fatal(err)
}这用于设置属性值:
err = chromedp.Run(ctx, chromedp.SetAttributeValue(dateDebut, "disabled", "false", chromedp.ByQuery))
if err != nil {
log.Fatal(err)
}对于最后只使用以下代码的代码:
err = chromedp.Run(ctx, chromedp.SendKeys(selectRCP, "RCP"))
if err != nil {
log.Fatal(err)
}像个魅力一样工作!
https://stackoverflow.com/questions/66370190
复制相似问题