首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不使用Robot类的情况下在Ubuntu中处理操作系统窗口(Selenium)

在不使用Robot类的情况下在Ubuntu中处理操作系统窗口(Selenium)
EN

Stack Overflow用户
提问于 2016-11-22 19:02:04
回答 2查看 489关注 0票数 0

我正在从Jenkins运行我的selenium脚本,这些脚本在执行时运行在专门用于Selenium Tests的机器上。但我有个问题。下面是我使用Robot类执行的一些操作:

1)点击图片上传图标。2)打开与Ubuntu OS相关的窗口(文件上传)。3)我必须经过图像的位置。4)并点击打开。

但由于Robot类的限制,在远程机器上失败。

有没有人能帮我克服这个问题?

代码语言:javascript
复制
<div class="dropify-wrapper">
    <div class="dropify-message">
        <span class="file-icon"/>
        <p>Drag and drop a file here or click</p>
        <p class="dropify-error">Sorry, this file is too large</p>
    </div>
    <input id="category_tile_upload" class="dropify" data-default-file="" type="file"/>
    <button class="dropify-clear" type="button">Remove</button>
    <div class="dropify-preview">
        <span class="dropify-render"/>
        <div class="dropify-infos">
            <div class="dropify-infos-inner">
                <p class="dropify-filename">
                    <span class="file-icon"/>
                    <span class="dropify-filename-inner"/>
                </p>
                <p class="dropify-infos-message">Drag and drop or click to replace</p>
            </div>
        </div>
    </div>
</div>

EN

回答 2

Stack Overflow用户

发布于 2016-11-22 22:42:24

这不应该使用Robot类来完成,因为可以使用Selenium来解决。不要单击打开上载窗口的元素,而是使用:

如果您的输入有一个ID,最好将它与By.id("inputID")一起使用,否则:

代码语言:javascript
复制
WebElement inputElement = driver.findElement(By.cssSelector("input[type='file']"));
element.sendKeys("/full/path/to/your/file");

并通过以下两种方式获取路径:

代码语言:javascript
复制
String pathToFile = System.getProperty("user.dir") + "/src/resources/your.file; 

要使用getResourceAsStream(),您可以:

代码语言:javascript
复制
try (InputStream in = this.getClass().getResourceAsStream(fileName)) {
    return getStringFromInputStream(in);
} catch (IOException e) {
    // handle
}

private String getStringFromInputStream(InputStream is) {

    BufferedReader br = null;
    StringBuilder sb = new StringBuilder();

    String line;
    try {
        br = new BufferedReader(new InputStreamReader(is));

        while ((line = br.readLine()) != null) {
           sb.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {

        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    return sb.toString();
}
票数 0
EN

Stack Overflow用户

发布于 2016-11-23 17:08:37

解决问题的常用方法是使用

代码语言:javascript
复制
WebElement file_input = driver.findElement(By.id("category_tile_upload"));
file_input.sendKeys("/path/to/file/to/upload");

实现这些代码行的结果是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40740153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档