【发布时间】:2021-05-27 21:52:57
【问题描述】:
我正在尝试使用 chromedp 将输入元素的 disabled 属性设置为 false。我可以使用控制台 chrome 开发工具修改它的值,但在我的代码中没有实现。
我将解释这个输入的完整行为以及我为什么需要它。
-
我有一个使用此命令修改的第一个选择输入
err = chromedp.Run(ctx, chromedp.SetValue("select[name=lstDoc]", rcp, chromedp.ByQuery)) if err != nil { log.Fatal(err) }通常您必须单击它,当您修改它的值时,它会自动更改我所针对的对象的禁用属性。它正在工作。
-
现在我们到达了我无法修改的元素,我可以在其中输入日期,所以我现在的选择器是正确的,我无法更改 disabled 属性,这是我实际尝试的:
dateDebut := "#txtDebutMAJ" err = chromedp.Run(ctx, chromedp.SetAttributeValue(dateDebut, "disabled", "false", chromedp.ByQuery)) if err != nil { log.Fatal(err) }
我已经运行 chromedp,headless 设置为 false,所以我可以清楚地看到该元素仍然被禁用,因为它总是变灰。
我在控制台上尝试过的东西,效果很好:
$("#txtDebutMAJ").disabled = false
【问题讨论】:
-
我对 chromedp 的经验为零,但从文档来看,不应该是
chromedp.SetAttributeValue("select[name=lstDoc]#txtDebutMAJ", ...)之类的东西吗?也就是说,选择器表达式应该匹配节点(元素)和其上的属性。 -
也许我的问题不清楚,但
select[name=lstDoc]和#txtDebutMAJ是两个不同的元素,第一个是选择,第二个是输入,您可以在其中放置一些文本