gpt4 book ai didi

javascript - 使用JSE(Selenium c#)设置值和文本的区别

转载 作者:行者123 更新时间:2023-11-27 23:39:13 24 4
gpt4 key购买 nike

我正在使用 IjavaScriptExecutor 设置属性。但有时会发生我的文本框包含我设置的值,但它没有将其显示为文本。因此,从字面上看,对于某些文本框,它会正常发送输入,而对其中一些则不会。它只是设置值。但不显示文本。为什么会这样?

代码:

 public static void SendKeysJavaScript(IWebElement element, string message)
{
//Instance of IJavaScriptExecutor class
var js = (IJavaScriptExecutor) Program.Driver;
//Local variable holding formated string
var stringFormat = string.Format("arguments[0].setAttribute('value','{0}')", message);
//Send "message" to the "element"
js.ExecuteScript(stringFormat, element);
//confirm that input has been sent
GetSentInput(element, message);
}

同时,我注意到文本框即使在清除后仍保留值。这可能是我无法将输入发送到同一个文本框两次的原因之一,重置值的方法是什么?

最佳答案

C# 的 .Text 属性返回内部文本,预期的返回值大致是纯文本浏览器将显示的内容。。参见 this

另一方面,value 是这里的属性,至少是您使用的方式。因此,唯一的操作方法是使用 JavaScript Executor。

现在,深入研究这个问题,如果我理解正确,clear() 方法不会触发应用程序预期的事件变化,因此您看不到任何变化.要触发更改,有多个选项,包括我从 Selenium Java 源代码中获取的选项。

/** * If this element is a text entry element, this will clear the value. Has no effect on other * elements. Text entry elements are INPUT and TEXTAREA elements. * * Note that the events fired by this event may not be as you'd expect. In particular, we don't * fire any keyboard or mouse events. If you want to ensure keyboard events are fired, consider * using something like {@link #sendKeys(CharSequence...)} with the backspace key. To ensure * you get a change event, consider following with a call to {@link #sendKeys(CharSequence...)} * with the tab key. */

void clear();

关于javascript - 使用JSE(Selenium c#)设置值和文本的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32440076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com