当前位置: 首页 > 知识库问答 >
问题:

如何用Selenium webdriver.NET通过JavaScript更改元素值

刘曾琪
2023-03-14

我试着用chrome webdriver和selenium2使用.NET测试弹出页面,但我遇到了一些问题。我需要更改一个元素的值后,它的窗口弹出。我需要将默认的“selectedindexes”:[“1”]“改为”selectedindexes“:[”0“]”

<input id="tsTabs_ClientState" name="tsTabs_ClientState" type="hidden" autocomplete="off"
value="{"selectedIndexes":["1"], "logEntries":[], "scrollState":{}}">
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
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中工作,用于运行脚本来设置另一个隐藏客户机的文本字段,所以我想在这里做类似的事情。我知道它会找到元素,但它不会运行脚本。这里、这里或这里的其他堆栈答案并没有证明是我解决这个问题所需要的。非常感谢任何帮助。

共有1个答案

朱阳晖
2023-03-14

我认为错误在于转义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':{}}\"")
 类似资料:
  • 问题内容: 是否可以通过JavaScript更改CSS伪元素样式? 例如,我想像这样动态设置滚动条的颜色: 而且我还希望能够告诉滚动条这样隐藏: 但是,这两个脚本都返回: 未捕获的TypeError:无法读取null的属性“样式” 还有其他解决方法吗?跨浏览器的互操作性并不重要,我只需要它在Webkit浏览器中即可工作。 问题答案: 编辑 : 从技术上讲,有一种通过JavaScript直接更改CS

  • 问题内容: 该代码不起作用 问题答案: JavaScript区分大小写。 因此,如果要更改字体大小,则必须执行以下操作:

  • 我是自动化的新手。我正在尝试自动化一个网页,有一个文本字段,我必须在其中输入一些文本,我尝试了driver.findElement(by.xpath(“ElemNT的XPath”).sendkeys(“value”);但这不起作用,所以我尝试通过Javascript driver.executeJavaScript(“arguments[0].value='100';”,“element path

  • 问题内容: 如何使用JavaScript 响应事件来更改HTML元素的类? 问题答案: 更改类的现代HTML5技术 现代浏览器添加了 classList , 该类 提供了一些方法,可以在不需要库的情况下更轻松地操作类: 不幸的是,尽管有一些垫片可以将其支持添加到IE8和IE9中,但这些功能在v10之前的Internet Explorer中无法使用。但是,它越来越受到支持。 简单的跨浏览器解决方案

  • 问题内容: 如何使用JavaScript 响应事件来更改HTML元素的类? 问题答案: 更改类的现代HTML5技术 现代浏览器添加了classList ,该类提供了一些方法,可以在不需要库的情况下更轻松地操作类: 不幸的是,尽管有一些垫片可以将其支持添加到IE8和IE9中,但这些功能在v10之前的InternetExplorer中无法使用,可从此页面获得。但是,它越来越受到支持。 简单的跨浏览器解

  • 如果我有一个跨度,就说: 我如何使用JavaScript将“hereismytext”更改为“newtext”?