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

使用phantomJS驱动程序从容执行javascript时遇到的一些问题

张宝
2023-03-14

在使用serenity框架从PhantomJS驱动程序执行javascript时,我面临以下问题。

 (PhantomJSDriver) driver).executeScript("document.getElementsById('whereOut')")

错误:

{“errormessage”:“'undefined'不是函数(计算'document.getelementsbyid('where out')')”、“request”:{“headers”:{“accept-encoding”:“gzip,deflate”、“connection”:“keep-alive”、“content-length”:“69”、“content-type”:“application/json;charset=UTF-8”、“host”:“localhost:33819”、“user-agent”:“apache-httpclient/4.3(java 1.5)”}whereout\u0027)\“,\”args\“:[]}”,“url”:“/execute”,“urlparsed”:{“锚点”:“”“,”查询“:”“”,“文件”:“execute”,“目录”:“/”,“路径”:“/execute”,“相对”:“/execute”,“端口”:“host”:“”port“:”“user”:“”userinfo“:”“password”:“”password“:”“password”:“”source“:”/execute“,”querykey“:{},”chunks 35-11E6-B64C-7BF1E13A7577/执行“}}命令持续时间或超时:278毫秒

还尝试了以下代码:

((JavascriptExecutor) driver).executeScript("document.getElementById('whereOut')")

上面的代码返回一个空值,即使我添加了一个返回值,如下所示:

((JavascriptExecutor) driver).executeScript("return document.activeElement")

返回空值。

((JavascriptExecutor) driver).executeScript("document.getElementById('whereOut').className=''")

共有1个答案

申屠宏胜
2023-03-14

尝试使用ExecuteAsyncScriptcallback,如下所示:-

String changedClassName = ((JavascriptExecutor) driver).executeAsyncScript("var callback = arguments[arguments.length - 1];var element = document.getElementById('whereOut');element.setAttribute('class', 'your new class name');callback(element.getAttribute('class'));");

编辑:-如果要修改desire元素的classname,请尝试使用.setattribute,如下所示

WebElement element = driver.findElement(By.id("whereOut"));
String changedClassName = ((JavascriptExecutor) driver).executeAsyncScript("var callback = arguments[arguments.length - 1];arguments[0].setAttribute('class', arguments[1]);callback(arguments[0].getAttribute('class'));", element, "your new class name");

希望它能帮助你...:)

 类似资料:
  • 问题内容: 我正在尝试在Jenkins(Unix)中以无头模式运行Selenium UI测试。我在Unix环境中使用了正确的phantomJS版本。 我收到上述错误。有见识吗?如果需要,我将提供更多详细信息。 问题答案: 实际文件需要可执行文件才能运行。更改文件权限以使其可执行,例如: 然后重新运行。高温超导

  • 我在小程序首页,这个位置打印一个东西,在启动页就能触发并执行,我的启动页是start页面,后面我试了下,在商品详情页也能执行打印,这到底是为什么呢? 我刚试下了下,好像在主包的页面都会这样,是因为我这个是写在外部的js中,不属于任何页面的生命周期,所以会执行吗?

  • 问题内容: 我正在尝试对大多数商业自动化工具中常见的基于Selenium的框架实施“对象选择器”。为此,我正在使用Javascript命令在鼠标位置找到该元素,但没有得到我期望的元素。 如果我使用的是ChromeDriver或InternetExplorerDriver,则脚本始终返回标头对象。无论我查看什么网页或鼠标的位置。尽管听起来好像脚本采用的是坐标0,但0而不是鼠标位置,我已经确认Curs

  • 各位大佬们,当我在构建docker容器的时候意外遇到了这个错误,想问问各位如何解决 其中docker报错

  • 我通过修改这个样板创建了一个工作的Mongo/Express/React/Node应用程序。我增加了几个页面,它的工作很好,但我正在尝试添加电容,这样我可以有iOS和Android版本。我按照Capacitor的说明将Capacitor添加到现有的web应用程序中,它构建得很好,但什么也没有发生。如果我在上添加一个带有警告的脚本标记,它就会运行。我认为它没有运行的应用程序内的应用程序正确的服务。这

  • 我试图在我的php脚本上执行这个命令。shell_exec(“phantomjs C:\sample\sample.js”); 但它返回null,仅仅几秒钟后。我预计这将需要很长时间,因为我已经在cmd上测试了这个命令,并且它正在工作。 我正在使用ajax调用执行此脚本的控制器,以便它可以在后台运行。问题是php端调用exec/shell\u exec命令。谁能启发我? 这是我的密码: 看法php