【问题标题】:How to change value of element via JavaScript with Selenium webdriver .NET如何使用 Selenium webdriver .NET 通过 JavaScript 更改元素的值
【发布时间】:2013-07-16 10:03:01
【问题描述】:

我正在尝试使用 .NET 使用 chrome webdriver 和 selenium2 测试弹出页面,但我遇到了问题。我需要在弹出窗口后更改元素的值。我需要将默认的 "selectedIndexes":["1"]" 更改为 "selectedIndexes":["0"]"

元素是:

<input id="tsTabs_ClientState" name="tsTabs_ClientState" type="hidden" autocomplete="off"
value="{"selectedIndexes":["1"], "logEntries":[], "scrollState":{}}">

我的代码如下: (我已经尝试了下面列出的 ExecuteScript 行)

Dim chromeDriver = New ChromeDriver("C:\clearcase\Projects\CMS\VbSeTest")
    Try
        'Chrome Test
        chromeDriver.Navigate().GoToUrl("http://localhost/CMS/<location>.aspx")

        Dim queryC As IWebElement = chromeDriver.FindElement(By.Id("ctl00_cphM_grd_ctl00_ctl02_ctl00_ACI_btnInitInsert"))
        queryC.Click()

        Dim current As String = chromeDriver.CurrentWindowHandle
        Dim windows = chromeDriver.WindowHandles.AsEnumerable
        Dim addOrgWindow As IWebDriver
        For Each window In windows
            If window <> current Then
                addOrgWindow = chromeDriver.SwitchTo.Window(window)
            End If
        Next
        'chromeDriver.ExecuteScript("document.getElementById('tsTabs_ClientState').value='{'selectedIndexes':['0'],'logEntries':[],'scrollState':{}}'")
        'OR
        chromeDriver.ExecuteScript("var tab=$get('tsTabs_ClientState'); tab.value ='{'selectedIndexes':['0'],'logEntries':[],'scrollState':{}}'")
        addOrgWindow.FindElement(By.Id("Organization_txtName")).SendKeys("MagicKingdom")
        addOrgWindow.FindElement(By.Id("Organization_cbIndustry_cb_Input")).SendKeys("REP")
        addOrgWindow.FindElement(By.Id("lbAdd")).Click()
        chromeDriver.Quit()

    Catch e As Exception
        chromeDriver.Quit()
        MsgBox(e.ToString())
    End Try

我在 chromeDriver.ExecuteScript(..... 行中不断收到错误:

Started ChromeDriver (v2.1) on port 63559

System.InvalidOperationException: unknown error: Runtime.evaluate threw exceptio
n: SyntaxError: Unexpected identifier
(Session info: chrome=28.0.1500.72)
(Driver info: chromedriver=2.1,platform=Windows NT 6.1 SP1 x86_64)
 at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response erro
 rResponse)
 at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecu
 te, Dictionary`2 parameters)
 at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScriptInternal(String script
 , Boolean async, Object[] args)
 at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScript(String script, Object
 [] args)
 at VbSeTest.PopUpTest.Main() in C:\clearcase\Projects\CMS\VbSeTest\VbSeTest\P
 opUpTest.vb:line 89
 [8412:6008:0717/103910:ERROR:textfield.h(162)] NOT IMPLEMENTED

javascript 在 Selenium IDE 中工作,用于运行脚本来设置另一个隐藏客户端的文本字段,所以我想在这里做类似的事情。我知道它找到了元素,但它不运行脚本。其他 Stack 答案 hereherehere 尚未证明是我解决此问题所需要的。非常感谢任何帮助。

【问题讨论】:

  • 我找不到造成错误的字符。

标签: javascript .net selenium-webdriver


【解决方案1】:

我认为错误在于转义您的 JSON 字符串:

chromeDriver.ExecuteScript("var tab=$get('tsTabs_ClientState'); tab.value ='{'selectedIndexes':['0'],'logEntries':[],'scrollState':{}}'")

请尝试:

chromeDriver.ExecuteScript("var tab=$get('tsTabs_ClientState'); tab.value =\"{'selectedIndexes':['0'],'logEntries':[],'scrollState':{}}\"")

【讨论】:

  • 不,但感谢您提供帮助。驱动程序可以正常打开,这就是那条线路所调用的。执行脚本部分出错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2020-04-09
  • 2019-02-15
  • 2012-08-10
  • 1970-01-01
  • 2017-10-27
  • 2023-03-11
相关资源
最近更新 更多