【发布时间】:2017-10-26 08:17:17
【问题描述】:
我有一个包含文本、文本字段、普通表单按钮和文件上传按钮(打开文件上传对话框)的页面。
所有其他元素都可以访问,除了文件上传按钮。我已经尝试过 .Click() 和 JavaScriptExecutor,但据我所知(视觉上)文件对话框永远不会打开。但是没有错误消息。
页面来源:
<a class="bttngrey file-input-container bttn-small" data-bind="enable: !uploading() " style="margin-top: 10px; ... data-original-title="Add attachment">
<i class="fa fa-cloud-upload">...</i>
<input type="file" data-bind="upload: addAttachments, enable: !uploading()"> == $9
点击按钮的 C#/Selenium 代码:
注意:我使用 Button 类和 JavaScriptActions 类来处理对 ChromeDriver 实例的调用,而不是直接调用它。我希望代码 sn-ps 有意义。
Button.FindByXPath("/html/body/div[1]/div[2]/overlay--master/div/div/overlay-lightbox/div/div[3]/content-placeholder/a").Click();
JavaScriptActions.ButtonClickXPath("/html/body/div[1]/div[2]/overlay--master/div/div/overlay-lightbox/div/div[3]/content-placeholder/a");
public class Button {
public static IWebElement FindByXPath (string bttnxpath) {
return GCDriver.Instance.FindElement(By.XPath(bttnxpath));
}
}
public class JavascriptActions {
public static void ButtonClickXPath (string xpath) {
GCDriver.JSClickXPath(xpath);
}
}
public class GCDriver {
....
....
....
public static void JSClickXPath (string xpath) {
IWebElement icon = Instance.FindElement(By.XPath(xpath));
Actions ob = new Actions(Instance);
ob.Click(icon);
IAction action = ob.Build();
action.Perform();
}
....
....
....
}
点击按钮的方法似乎都不起作用。即使它们适用于页面上的其他“正常”按钮。我尝试 JavaScriptExecutor 的原因是我之前遇到过这样的情况,即像这样的按钮(打开文件对话框)不能通过普通的 Selenium 方法点击,但它是用 JavaScriptExecutor 实现的。
这里奇怪的是这两种方法都刚刚完成而没有任何错误。但是,当我查看页面时,我看不到单击和打开对话框。测试立即结束。在单击按钮之前和之后添加显式等待也无济于事。
有什么想法吗?如有必要,我会详细说明;并不总是很清楚需要显示多少代码才能使问题/问题清晰。
【问题讨论】: