【问题标题】:How to set HTML form input value, if element id, classname, other attributes are not known?如何设置 HTML 表单输入值,如果元素 id、类名、其他属性未知?
【发布时间】:2019-08-26 17:13:33
【问题描述】:

我找不到任何解决方案。在浏览器中打开的网站上,我有HTML 表单,文本输入textbox。没有一个属性是未知的。我能够以编程方式在textbox 上发送 CLICK 输入(通过将鼠标移动到 x、y 并单击它)以使光标在其上处于活动状态。但我仍然不知道如何使用JavaScript 发送一个字符串输入到活动文本框。我会很高兴得到任何帮助。整个项目在 C# 中,使用 CefSharp 和 EvaluateScriptAsync 方法。

【问题讨论】:

  • 如果你能找到它专注于它,为什么你不能使用相同的参考来设置价值?请提供minimal reproducible example
  • @charlietfl 我能够以编程方式将鼠标移动到 x,y 并单击它。点击后如何用字符串填充?

标签: javascript c# html automation cefsharp


【解决方案1】:

我能想到的一个解决方案是给输入元素一个类名,并通过类名在 javascript 中访问它,然后设置它的文本值

例如:

HTML

<input type="text" class="activeclass"/>

In javascript you can access this element by

var inputEl=document.getElementsByClassName('activeclass');
if(inputEl!=undefined)
inputEl.text="sampletext";

【讨论】:

  • 在网站上,我无法访问源代码。我只想注入一些代码来做到这一点。不过还是谢谢:)
  • 好的..您可以使用 document.activeElement 在文档上找到活动元素。因此,您可以执行以下操作: var y=document.activeElement; y.value="你好";
  • 刚刚试了一下,没用。我使用了await wbPrzegladarka.EvaluateScriptAsync(@" var elem = document.activeElement; elem.value = '" + przetworzoneAudio + @"'; ");,它是通过C# 中的代码注入的,而` + przeworzoneAudio + ` 是一个不同的。我在这里只担心 JS 代码。也许element 可能超出activeElement 的范围?
【解决方案2】:

如果你知道元素的坐标,你可以使用document.elementFromPoint(x, y); 来定位它

【讨论】:

  • 由于某种原因,它不起作用。我使用了await wbPrzegladarka.EvaluateScriptAsync(@" let elem = document.elementFromPoint(329, 287); elem.value = '" + przetworzoneAudio + @"'; ");,它是通过C# 中的代码注入的,而` + przeworzoneAudio + ` 是一个不同的。我在这里只担心 JS 代码。也许element 可能超出elementFromPoint 的范围?
【解决方案3】:

最后我决定使用InputSimulator,它假装在点击元素的地方写一个字母。

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2011-10-07
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多