- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对这个仪器概念完全陌生。我有一个自定义 jar 文件,其中有很多方法。现在让我们假设我有启动和停止方法。为了收集开始和停止指标,我需要在每次点击后调用这些方法。有一种方法可以代替这样做。我希望在运行时之前和之后动态地为所有可点击元素调用此方法。对此有任何建议都会很棒。提前致谢。请查找示例代码。
自定义方法:
Public void start (){
long start = System.currentTimeMillis();
}
public void stop{
long finish= System.currentTimeMillis();
long totalTime = finish - start;
}
示例代码:
start();
driver.findElement(By.name("username")).sendkeys("@@@");
stop();
start();
driver.findElement(By.name("password")).sendkeys("@@@");
stop();
start();
driver.findElement(By.name("login")).click();
stop();
最佳答案
这是一个使用 ByteBuddy 的示例仪器解决方案,尽管正如我在该问题下的评论中提到的那样,它可能不是解决此问题的最佳方法。
对于这个简单的示例,代码仅涵盖 WebDriver 和 WebElement 上的调用被链接的情况,例如:
driver.findElement(By.name("login")).click();
driver.findElement(By.name("logout")).click();
如果没有额外的编码,类似下面的片段将无法工作:
WebElement element1 = findElement(By.name("login"));
WebElement element2 = findElement(By.name("logout"));
element2.click();
element1.click();
仪器代码:
public class ByteBuddyTest {
public static void main(String[] args) throws Exception {
ByteBuddyAgent.install();
new ByteBuddy()
.redefine(RemoteWebDriver.class)
.visit(Advice.to(WebDriverAdvice.class).on(named("findElement").and(takesArguments(1))))
.make()
.load(ByteBuddyTest2.class.getClassLoader(),
ClassReloadingStrategy.fromInstalledAgent());
new ByteBuddy()
.redefine(RemoteWebElement.class)
.visit(Advice.to(WebElementAdvice.class).on(named("click")))
.make()
.load(ByteBuddyTest2.class.getClassLoader(),
ClassReloadingStrategy.fromInstalledAgent());
InternetExplorerDriver driver = new InternetExplorerDriver();
driver.get("<some webpage>");
driver.findElement(By.id("<some_id>")).click();
}
public static class WebDriverAdvice {
@Advice.OnMethodEnter
public static void enter(@Advice.Origin String method) {
System.out.printf("Driver Method Enter: %s\n", method);
Times.start = System.currentTimeMillis();
}
}
public static class WebElementAdvice {
@Advice.OnMethodExit
public static void exit(@Advice.Origin String method, @Advice.This Object target) {
System.out.printf("Element Method Exit: %s\n", method);
System.out.println("Time: " + (System.currentTimeMillis() - Times.start));
}
}
public static class Times {
public static long start = 0L;
}
}
使用 WebDriverEventListener 的示例
public class WebDriverEventListenerTest {
public static void main(String[] args) throws Exception {
InternetExplorerDriver driver = new InternetExplorerDriver();
EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
eventDriver.register(new EventHandler());
eventDriver.get("<some webpage>");
eventDriver.findElement(By.id("<some id>")).click();
eventDriver.findElement(By.id("<some id>")).click();
}
public static class EventHandler extends AbstractWebDriverEventListener {
@Override public void beforeFindBy(By by, WebElement element, WebDriver driver) {
System.out.printf("Driver Find By: %s\n", by);
Times.start = System.currentTimeMillis();
}
@Override public void afterClickOn(WebElement element, WebDriver driver) {
System.out.printf("Element Method Exit: %s\n", element);
System.out.println("Time: " + (System.currentTimeMillis() - Times.start));
}
}
public static class Times {
public static long start = 0L;
}
}
关于java - 如何使用 java Instrumentation 在运行时调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48684392/
这个问题在这里已经有了答案: What is instrumentation? (5 个回答) 4年前关闭。 正如标题所暗示的那样。很多解释真的很模糊,谁能提供一个更可靠的定义? 该术语在 Andro
我正在使用java.lang.instrument包来获取java对象的内存大小(可以嵌套)。 我使用下面的方法来获取对象大小: import java.lang.instrument.Instrum
Xcode Instruments 中是否有一个 Instrument 可以记录我的代码进行的所有调用(无论是否有 Apple 自己的框架)。 最接近的工具似乎是 Time Profiler。 但是,
当我使用 xCode 运行我的应用程序时,所有负载都运行良好。当我使用 Activity Monitor 或 Allocations 的分析模板加载 Instruments 并按下记录时,它加载并运行
如果我尝试使用 import java.lang.instrument.Instrumentation; 它说这个语句无法解决。可能出什么问题了?我使用的是jdk1.6。 最佳答案 您确定这正是您的导
当我尝试运行 SignUpFragmentTest 类时,出现错误“未注册检测!必须在注册检测下运行”。我认为当我使用@Rule 时会抛出错误。 import android.support.test
是否可以在 JUnit 测试中使用 java.lang.instrument.Instrumentation?我正在使用 mockrunner 来模拟一个 Servlet,并想测量 session 中
我最近搬到了另一台电脑,需要重置我的所有环境。 所以,这个测试以前是有效的。 但是我不记得我以前使用的是哪个版本的 Java/JDK。 好吧,问题是: java.lang.instrument.Ill
我是 Xcode 和 iOS 的新手,今天一直在尝试使用 Instruments 工具。有些事情我正在努力解决: 场景: 我创建了一个简单的应用程序,它使用 UISearchBar 过滤 UITabl
我使用 java.lang.instrument.Instrumentation#redefineClasses() 重新定义现有类。有时,我需要重新定义几个类。 如果我一个一个地重新定义类,我就会知
要检查 iOS 应用程序的内存使用情况,请说代码是否为 int n = 1000000; NSObject *bar = [[NSObject alloc] init]; foo = [[NSMuta
我正在尝试通过 Corda Hello world example (特别是 Java 版本)。 我已经到了 nodes should be deployed但这失败了: > ./gradlew cl
(Xcode 4.5) 当从命令行运行仪器时,它第一次可以工作,但直到我重新启动后它才会再次运行。 仪器的详细输出包括: Instruments : Loading template 'file://
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
我是 zipkin 和 brave api 的新手,用于分发跟踪。我在本地主机上设置了一个 zipkin 服务器,监听端口 9411。我执行了下面的函数,但在我的 zipkin 服务器中没有显示任何跟
我正在开发一个名为 "Cloudnet-v3" 的开源项目。我在本地计算机上使用符号链接(symbolic link)/data 到 IntelliJProjects-Folder 中的数据点。 我得
我目前正在使用 Android 仪器测试测试我的示例应用程序。默认情况下,项目创建 AndroidTest文件夹给我。我只是在文件夹中添加了更多测试用例。 我以前用expresso触发 UI 按钮,但
好的,这是我的问题,如果重复,我深表歉意。我进行了搜索,但找不到任何我认为相关的内容。 当我从 xcode 运行仪器并开始测试我的应用程序是否存在内存泄漏或分配时,我的 iMac 最终开始运行得很慢。
我在 Xcode 中启动 Time Profiler 时遇到问题,无论是 Mac 应用程序还是 iPhone 应用程序。 我尝试过的步骤是打开时间分析器,单击选择目标下拉框,选择我的 iPhone 或
我想调试我的核心动画代码。但是,仪器配置文件不存在,并且在仪器库中也不可用。 我正在使用 Xcode 4。如何安装/访问它并使其正常工作? 最佳答案 核心动画分析只能从设备上获得。如果您正在分析模拟器
我是一名优秀的程序员,十分优秀!