Java Selenium:选择覆盖输入类型文件

Java Selenium:选择覆盖输入类型文件,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我对硒有一些问题。 我有一个覆盖div,其中包含一个输入类型文件,我正在尝试选择它: <div class="xenOverlay attachmentUploader" style="z-index: 9999; top: 92.7px; left: 206px; position: fixed; display: block;"> <form action="http://localhost/xenforo/index.php?attachments/do

我对硒有一些问题。
我有一个覆盖
div
,其中包含一个输入类型文件,我正在尝试选择它:

<div class="xenOverlay attachmentUploader"
    style="z-index: 9999; top: 92.7px; left: 206px; position: fixed; display: block;">

    <form action="http://localhost/xenforo/index.php?attachments/do-upload" method="post" enctype="multipart/form-data"
        class="formOverlay AutoInlineUploader AttachmentUploadForm NoAutoHeader" data-overlayclass="attachmentUploader">

        <dl class="ctrlUnit">
            <dt><label for="ctrl_upload">Upload a File (<span title="1,048,576 bytes">Max 1 MB</span>):</label></dt>
            <dd id="SWFUploadContainer" data-placeholder="#SWFUploadPlaceHolder" data-trigger="#ctrl_upload">
                <span id="SWFUploadPlaceHolder"></span>
                <input type="file" name="upload" class="textCtrl" onchange="this.blur()" id="ctrl_upload">
                <input type="reset" value="Close" class="OverlayCloser button smallButton">
            </dd>
        </dl>

        <div class="attachmentConstraints pairsRows">
            <dl>
                <dt>Accepted file types:</dt>
                <dd>zip, txt, pdf, png, jpg, jpeg, jpe, gif, torrent</dd>
            </dl>
        </div>

        <input type="hidden" name="_xfToken" value="1,1482434233,ccadf23a674c4c4b9def910cf5d55cea4b44ab2a">
        <input type="hidden" name="hash" value="a9288bd75c0c87638d9057237511e16c">
        <input type="hidden" name="content_type" value="post">
        <input type="hidden" name="key" value="">
        <input type="hidden" name="content_data[node_id]" value="3">
    </form>
</div>
我正在Windows 10上使用Selenium 3.0.1和ChromeDriver

更新:

完整代码:

static void createNewThread(WebDriver driver, String category, String title, String message){       
    String url = "http://localhost/xenforo/index.php?forums/" + category + "/create-thread";
    driver.get(url);

    WebElement ttl = driver.findElement(By.className("titleBOT"));
    ttl.clear();
    ttl.sendKeys(title);

    WebElement msg = driver.findElement(By.xpath("//*[@id='ThreadCreate']/fieldset[1]/dl[2]/dd/div/div/iframe"));
    msg.click();
    msg.clear();
    msg.sendKeys(message); 

    driver.findElement(By.xpath("//*[@id='ctrl_uploader']")).click();   

    WebElement elem = driver.findElement(By.xpath("//input[@type='file']"));
    elem.sendKeys("C:\\e.txt");

    //driver.findElement(By.xpath("//*[@id='ThreadCreate']/dl[2]/dd/input[1]")).click();    
}
我想它没有找到我正在搜索的元素。此元素仅在我单击按钮并覆盖旧内容时显示

更新2:

我想我已经发现了问题所在。上传是通过flash,而不是通过html,当我通过
click()
单击flash按钮时,网站的反应与实际用户单击时的反应不同。

请尝试以下操作:

WebElement elem = driver.findElement(By.xpath("//input[@type='file']"));
elem.sendKeys("C://e.txt");

让我知道它是否有效。

试试这个简单的方法,希望它能起作用-

driver.findElement(By.id(“ctrl_upload”)).sendKeys(“C:\\e.txt”)


并将您的文件路径
C://e.txt
更正为
C:\\e.txt

不起作用,eclipse在
WebElement elem=driver.findElement(By.xpath(//input[@type='file'])上不断给我一系列错误的行。您能分享错误或异常跟踪吗?此外,此控件是否显示在带有xenOverlay attachmentUploader类的div下?请提供一些代码片段,说明您实际在做什么。在您的错误日志中,您似乎正在清除一个不可编辑的文本框,我有点困惑,什么
WebElement msg=driver.findElement(By.xpath(“/*[@id='ThreadCreate']]/fieldset[1]/dl[2]/dd/div/div/iframe”)正在执行此操作。单击iFrame,然后清除,然后发送一些文本。我有一些指导原则-1。只能输入和清除文本字段的值。2.如果页面中有框架,则首先需要切换到该框架,然后必须在其下定位元素。
WebElement elem = driver.findElement(By.xpath("//input[@type='file']"));
elem.sendKeys("C://e.txt");