小编vap*_*p78的帖子

某些导航会关闭Internet Explorer 10开发人员工具

我正在尝试通过使用开发人员工具控制台监控网络来调试Internet Explorer 10的问题,但我遇到了奇怪的行为 - 有时控制台只是关闭而且所有记录的流量都丢失了.

更确切地说,呼叫序列如下(这实际上是标准的SAML 2.0身份验证流程,IDP上的客户端证书登录):

  1. 获取https://application.host/alias - > response是一个自动提交POST表单:
  2. POST https://identity.provider.host/sso/end/point/alias - >使用证书进行身份验证,并返回包含SAML 2.0响应的自动提交POST表单,并将其提交给:
  3. POST http://application.host/acs/end/point - >将自动提交POST表单返回到:
  4. POST https://application.host/alias(最初访问的资源) - 重定向到:
  5. 获取https://application.host/alias

请注意,初始访问后的所有内容都会自动发生,用户无需单击任何链接或提交某些表单.

自动提交POST表单是这样的:

<html>
<head> 
... some head data here...
</head>
<body onLoad="document.forms[0].submit()">
  <form name="auto.submit.form">
   ... some form fields here...
  </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题出现在第2点之后 - 开发人员工具控制台刚关闭但这似乎不会影响浏览器的实际工作.

我也试过HttpWatch Professional - 我得到了同样的效果 - 插件只是停止录制或完全关闭.在这种情况下我不能使用Fiddler,因为它阻止我调试实际问题(即当启用Fiddler时它可以工作).此问题也是IE特有的,因此我无法使用其他浏览器的开发人员工具.

关于这个的任何想法/提示?

更新:我想我至少知道了一部分问题:当导航到不同区域时,开发人员工具窗口关闭.即在我的情况下,步骤2中的主机位于Internet区域,而来自本地Intranet区域中其他步骤的主机,然后在从第2点到第3点的导航完成后关闭开发工具窗口(而不是重定向时)从1到2完成).不同之处在于,第一个是通过javascript和自提交表单完成的,而另一个只是302重定向响应.

将所有站点添加到本地Intranet区域后,问题停止发生.仍然是一个谜,似乎是一个IE问题而不是开发工具问题,因为HttpWatch似乎也受其影响.

internet-explorer developer-tools httpwatch internet-explorer-10

11
推荐指数
1
解决办法
9696
查看次数

Android:如何创建一个按钮,图像和文本都居中

我陷入了Android的一个奇怪问题 - 我希望有一个看起来像这样的按钮:

 |-----------------------------------------------------------------------|
 |                   [icon] <5px> [text text text]                       |
 |-----------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)

并且组([icon] <5px> [文本文本文本])应居中.请注意,5px仅用作占位符,用于图标和文本之间的任何填充

我在这里找到了一些答案或多或少地围绕设置背景(我不想做因为我有另一个背景)或使用android:drawableLeft属性来设置图标.

但是看起来像setCompoundDrawablesWithIntrinsicBounds方法的文档有点误导(见这里).它声明图像位于TEXT的左/右/上/下侧,这是不正确的.图标位于按钮的相应侧.例如:

设置android:drawableLeft属性将图标放在最左边的位置并获取此信息(使用重力CENTER):

 |-----------------------------------------------------------------------|
 | [icon]                     [text text text]                           |
 |-----------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)

或者这个(重力为左):

 |-----------------------------------------------------------------------|
 | [icon] [text text text]                                               |
 |-----------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)

两个都是丑陋的地狱:(

我找到了一个看起来像这样的解决方法:

public static void applyTextOffset(Button button, int buttonWidth) {
    int textWidth = (int) button.getPaint().measureText(button.getText().toString());
    int padding = (buttonWidth / 2) - ((textWidth / 2) + Constants.ICON_WIDTH  + Constants.ICON_TO_TEXT_PADDING);
    button.setPadding(padding, 0, 0, 0);
    button.setCompoundDrawablePadding(-padding);
}
Run Code Online (Sandbox Code Playgroud)

它或多或少有效,但由于以下原因,我不喜欢它:

  • 它需要知道按钮宽度.使用自动调整大小的按钮,直到实际布局完成后才能知道.Google建议在渲染完成后使用侦听器来学习实际宽度,但这会使代码变得非常复杂.
  • 我觉得我正在接受Android布局引擎的布局责任

难道没有更优雅的解决方案吗?

layout android text image button

6
推荐指数
1
解决办法
3934
查看次数

我们可以用 PowerMock 创建一个 java.lang.Class 的模拟实例吗?

我需要编写一个模拟 java.lang.Class 类实例的测试。这可以通过 PowerMock 实现吗?

我尝试执行以下操作:

PowerMock.createMock(Class.class);
Run Code Online (Sandbox Code Playgroud)

结果是:

java.lang.IllegalAccessError: java.lang.Class
    at sun.reflect.GeneratedSerializationConstructorAccessor12.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:40)
    at org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:223)
    at org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139)
    at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2146)
    at org.powermock.api.easymock.PowerMock.createMock(PowerMock.java:89)
Run Code Online (Sandbox Code Playgroud)

根据 PowerMock 的文档,这应该是可能的,但我仍然收到此错误。

有人设法做到这一点吗?

编辑:为什么我需要这个?在测试的编码中有以下语句:

if (someObject.getClass().getName().equals(SOME_CLASS_NAME_THAT_I_DONT_HAVE_ACCESS_TO)) { ... do some stuff ... }
Run Code Online (Sandbox Code Playgroud)

我需要我的测试来达到“if”中的编码,我什至不能提供具有相应名称的类的模拟实例。

作为一种解决方法,我可以在测试中创建一个具有相同名称和包的类,但它很难看。

编辑2:

我也尝试了这个链接的建议

import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.junit.Test;

@RunWith(PowerMockRunner.class)
@PrepareForTest({Test1.class})
public class Test1 {

    @Test
    public void test() {
        PowerMock.createMock(Class.class);
    }

}
Run Code Online (Sandbox Code Playgroud)

结果是一样的:“java.lang.IllegalAccessError: java.lang.Class”

所以作为最终结果 - 似乎没有办法创建 java.lang.Class 的模拟实例

谢谢

java unit-testing powermock

5
推荐指数
1
解决办法
3247
查看次数

HashSet.contains(object)返回false,例如在插入后修改

根据java.util.HashSet.contains()JavaDoc,该方法执行以下操作

如果此set包含指定的元素,则返回true.更正式地,当且仅当此集合包含元素e时才返回true (o == null?e == null:o.equals(e)).

但是,这似乎不适用于以下代码:

public static void main(String[] args) {
    HashSet<DemoClass> set = new HashSet<DemoClass>();
    DemoClass toInsert = new DemoClass();
    toInsert.v1 = "test1";
    toInsert.v2 = "test2";
    set.add(toInsert);
    toInsert.v1 = null;

    DemoClass toCheck = new DemoClass();
    toCheck.v1 = null;
    toCheck.v2 = "test2";

    System.out.println(set.contains(toCheck));
    System.out.println(toCheck.equals(toInsert));
}

private static class DemoClass {
    String v1;
    String v2;

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * …
Run Code Online (Sandbox Code Playgroud)

java collections hashset

4
推荐指数
1
解决办法
1122
查看次数

为什么okhttp3.Response类是最终的

我正在尝试为类单元okhttp3编写单元测试,而我却在模拟okhttp3.Response类.

它被宣布为final,大多数模拟框架都不能模拟最终类.我宁愿不使用Powermock也只是为了这个.

看一下代码,我可以看到有可能创建一个Response类的真实实例并在测试中使用它,但与仅模拟一个方法(在我的情况下)相比,它会更多代码并且可读性更低.

okhttp3.Response类的"final"修饰符背后的任何具体原因或在以后的版本中删除它的任何计划?

java unit-testing okhttp okhttp3

4
推荐指数
1
解决办法
900
查看次数