小编Gre*_*een的帖子

Java是否允许可以为空的类型?

在C#中我可以使用变量来允许带有问号的空值.我想要一个true/false/null结果.我希望默认情况下将其设置为null.测试结果将布尔值设置为true/false,但有时测试不会运行,并且java中的布尔值默认为false,因此测试的第3个选项会很好.

c#示例:

bool? bPassed = null;
Run Code Online (Sandbox Code Playgroud)

java有类似的东西吗?

java syntax null

32
推荐指数
6
解决办法
3万
查看次数

javamail将gmail消息标记为已读

注意:回答后添加:谢谢..是的,我曾尝试过Flag.SEEN为true和saveChanges ..我也读过了读取的getContent标记.我尝试在循环消息的for语句中使用它.但是我在下一个循环中再次从文件夹中收到了消息.我假设文件夹是实时的,所以抓住内容,然后从过滤器的文件夹中再次抓取消息,看不到任何看到应该工作,但我仍然得到相同的消息.我可以尝试关闭文件夹并重新打开作为测试,以查看它是否已标记.此外,如果我转到我的客户端并单击该消息,那么我的代码即使在循环中也不会再看到它,所以我希望在代码中也这样做.

original:我正在使用javamail从gmail帐户获取电子邮件,它工作得很好,当我收到消息时我想将其标记为已阅读,是否有人可以给我一些指示?这是我目前的代码:

    Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps");
    try {
        Session session = Session.getDefaultInstance(props, null);
        Store store = session.getStore("imaps");

        store.connect("imap.gmail.com", eUserName, ePassWord);
        // Get folder
        Folder folder = store.getFolder("INBOX");
        if (folder == null || !folder.exists()) {
            return null;
        }
        folder.open(Folder.READ_ONLY);

        // Only pull unread
        FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
        Message messages[]; // = folder.search(ft);

        for(int x = 0; x < timeOutInSeconds; x++) {
            log.reportMessage("looking for emails");
            try {
                folder.getMessages();
                messages = folder.search(ft);

                if (messages.length > 0) { …
Run Code Online (Sandbox Code Playgroud)

java jakarta-mail

32
推荐指数
2
解决办法
3万
查看次数

使用java的空间webdriver类名

这个问题接受了jQuery的伟大的答案,我想知道,如果有人能够给出一个例子在Java中吗?

我正在做driver.findElement(By.className("current time")).click();空间是问题,我在链接上看到了解释,但我不确定如何在java中处理它,并且无权更改类名.

粘贴我在Firefox中检查id的示例:下面的cssSelector示例不起作用,但我可能会遗漏一些东西.

<span>
<a class="current time" href="http://someurl/"   onclick="s_objectID="http://someur/">url</a>
</span>
Run Code Online (Sandbox Code Playgroud)

java selenium webdriver

21
推荐指数
3
解决办法
8万
查看次数

使用FireFoxDriver进行WebDriver FireFoxProfile UserAgent切换

我想知道我是否可以动态更改用户代理配置文件,而无需创建ForeFoxDriver的新实例?我有以下代码,我可以传递给iphone或ipad的用户代理等.它工作正常,但我必须为每个测试创建一个新的实例,因为它打开/关闭浏览器很慢.例如,在使用iPhone用户代理进行测试后,我想将配置文件切换到Android用户代理或iPad用户代理,驱动程序是否可以选择更改此操作而无需创建新实例?

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("general.useragent.override","some user agent, like iphone or iPad");
WebDriver driver = new FirefoxDriver(profile);

// do some tests
// set profile to new user agent
// profile.setPreference("general.useragent.override","some android user agent");

// can i now set the driver to the new profile here and perform more tests on this same instance of the driver?
Run Code Online (Sandbox Code Playgroud)

java user-agent webdriver selenium-webdriver

13
推荐指数
1
解决办法
3205
查看次数

webdriver firefox 7最大化窗口

我一直在使用以下示例在我的WebDriver测试中最大化我的窗口,我升级到Firefox 7,并且脚本退出工作.我没有得到错误,窗口没有最大化,想知道是否有其他人已经看到这个或知道为什么它不再工作,或其他方式来做它..

我目前的代码在FireFox 7之前有效......

public static final String MAXIMIZE_BROWSER_WINDOW = "if (window.screen) {window.moveTo(0, 0);window.resizeTo(window.screen.availWidth,window.screen.availHeight);};";

public static Object maximizeBrowserWindow(WebDriver driver) {
    return executeJavascript(driver, MAXIMIZE_BROWSER_WINDOW);
}

private static Object executeJavascript(WebDriver driver, String script){
    JavascriptExecutor js=(JavascriptExecutor) driver;
return js.executeScript(script);
}
Run Code Online (Sandbox Code Playgroud)

java webdriver firefox7

9
推荐指数
1
解决办法
4460
查看次数

Java HashMap <String,List <String >>()比较

我想知道比较这两个HashMaps的最佳方法.我想验证它们是否相同,如果不相同,有什么区别.如果它很重要,那么我想知道第二个有/没有第一个hashmap确实有什么.我需要知道一个是否有另一个没有的密钥,以及每个密钥的值列表差异.我希望有一种简单的方法来映射这个,但不确定.基本示例:

    HashMap<String, List<String>> hmOne = new HashMap<String, List<String>>();
    List<String>l1 = new ArrayList<String>();

    l1.add("one");
    l1.add("two");
    l1.add("three");
    l1.add("four");
    l1.add("five");
    hmOne.put("firstkey", l1);
    l1 = new ArrayList<String>();

    l1.add("1");
    l1.add("2");
    l1.add("3");
    l1.add("4");
    l1.add("5");
    hmOne.put("secondkey", l1);

    HashMap<String, List<String>> hmTwo = new HashMap<String, List<String>>();
    List<String>l2 = new ArrayList<String>();
    l2.add("one");
    l2.add("two");
    l2.add("four");
    l2.add("five");
    hmTwo.put("firstkey", l2);
    l2 = new ArrayList<String>();

    l2.add("1");
    l2.add("3");
    l2.add("4");
    l2.add("5");
    hmTwo.put("secondkey", l2);
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

java collections list hashmap

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

HashMap复制行为我无法弄清楚

我无法获得HashMaps的单独副本.我的意思是,一旦我制作了原件的副本,对其中一个进行更改并不会改变另一个.

我有两种HashMaps格式:

HashMap<String, List<String> one = new HashMap<String, List<String>();
HashMap<String, List<String> two = new HashMap<String, List<String>();
Run Code Online (Sandbox Code Playgroud)

我调用下面的函数(getTabSetDifferences)传入一个和两个,正如预期的那样,如果存在一些差异,这些值将从HashMap中删除,并且它将与传入测试之前不同.

我希望它们保持不变,所以尝试传递:

getTabSetDifferences((HashMap)one.clone(), (HashMap)two.clone())
Run Code Online (Sandbox Code Playgroud)

这仍然改变了原件,所以我创建了两个相同格式的哈希映射,并克隆了一个和两个,我使用新的哈希映射传入,原始仍然改变.

然后我尝试了:

HashMap<String, List<String>> holdOne = new HashMap<String, List<String>>();
holdOne.putAll(one);

HashMap<String, List<String>> Holdtwo = new HashMap<String, List<String>>();
holdTwo.putAll(two);
Run Code Online (Sandbox Code Playgroud)

现在我可以这样做:

holdTwo.remove(key);
Run Code Online (Sandbox Code Playgroud)

原来没有改变,但如果我用holdOne和holdTwo调用方法它仍然会改变原来的一个和两个哈希图,它们不应该保留吗?该方法正在工作,并找到我想要的差异,并返回.但是我仍然需要原来的两个哈希映射,但无论我调用哪种方式,对holdOne和holdTwo进行的更改都会更改原始内容.这是预期的行为吗?如果是这样,获取与其无关的hashmap副本的正确方法是什么.

getTabSetDifferences(holdOne, holdTwo);

public HashMap<String, List<String>> getTabSetDifferences(HashMap<String, List<String>> hmMain, HashMap<String, List<String>> hmSecond)   {
    HashMap<String, List<String>> hmDifferences = new HashMap<String, List<String>>();
    for (Map.Entry<String, List<String>> entry : hmMain.entrySet()) {
        if(hmSecond.containsKey(entry.getKey())) {
            entry.getValue().removeAll(hmSecond.get(entry.getKey()));
            if (entry.getValue().size() > 0)
                hmDifferences.put(entry.getKey(), entry.getValue());
        }
        else {
            hmDifferences.put(entry.getKey(), …
Run Code Online (Sandbox Code Playgroud)

java clone copy hashmap

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