【问题标题】:Selenium-C#: SendKeys timing out & JS Executor throwing errorSelenium-C#:SendKeys 超时和 JS 执行器抛出错误
【发布时间】:2018-04-29 23:14:19
【问题描述】:

尝试在“Textarea1”控件中粘贴数据(非常大),以下是我尝试使用的两种方法,但第一种方法尝试粘贴数据但有时会抛出超时错误,第二种方法会抛出 JS 错误。请帮忙

public StringBuilder PasteDataIn_Tarea1
{
    set
    {
        //Method1
        Textarea1.Clear();
        Textarea1.SendKeys(value.ToString());

        //Method2
        IWebDriver driver; 
        IJavaScriptExecutor js = (IJavaScriptExecutor)driver;

        StringBuilder javascript = new StringBuilder();
        javascript.Append(string.Format("$('#Textarea1').text('{0}')", value));//value has my data which is quiet big, "Textarea1" is where I need to paste my data
        js.ExecuteScript(javascript.ToString()); // Js exector which should paste my data            
    }
}

Method2 抛出以下异常:

“System.InvalidOperationException”类型的异常发生在 WebDriver.dll 但未在用户代码中处理

附加信息:JavaScript 错误 (UnexpectedJavaScriptError)

我更喜欢去Method2,因为第一个需要时间将数据粘贴到文本区域。

【问题讨论】:

  • 抛出了哪些确切异常?
  • 添加method2异常,第一种方法是webdriver超时异常
  • IMO,Method1 更干净。
  • Its easy to use Method1 but it takes time to paste the data, like character by character its 粘贴,thats why its 超时
  • 另外,你有constants 就像InputEle,否则使用IJavaScriptExecutor 直接XPath 会更容易

标签: javascript c# selenium selenium-webdriver


【解决方案1】:

尝试重置浏览器超时:

 ChromeOptions options = new ChromeOptions();
 options.AddArgument("--disable-extensions");
 ChromeDriverService svc = ChromeDriverService.CreateDefaultService();
 IWebDriver driver = new ChromeDriver(svc, options,TimeSpan.FromMinutes(5));

上面的示例将命令超时设置为 5 分钟。我遇到了类似的问题,这对我有用。

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多