【问题标题】:File upload works during debugging but not on the actual run in c#文件上传在调试期间有效,但在 c# 中的实际运行时无效
【发布时间】:2013-08-13 23:05:03
【问题描述】:

在调试时,以下代码有效。但是当我让它进行测试时,它会显示一个错误。为了解决该错误,我添加了一个 java 脚本(来自另一个问题的示例)来更改不透明度,但这似乎并不能解决问题。

上传部分代码:

//File Details
 FileName = "EMED.pdf";

 FilePath = "\\\\iasfs1\\QA\\OpenSpace\\Automation\\FilesForUpload\\EMED.pdf";

//File Upload
WaitForElementPresent(By.Id("upload"));
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("document.getElementById('FileUpload').style.opacity = 1;");''

IWebElement fileUpload = driver.FindElement(By.Id("FileUpload"));
Console.Write("fileUpload.Displayed : " + fileUpload.Displayed.ToString());
Debug.WriteLine("fileUpload.Displayed : " + fileUpload.Displayed.ToString());
System.Diagnostics.Trace.WriteLine("fileUpload.Displayed : " +       fileUpload.Displayed.ToString());

fileUpload.SendKeys(OSData.FilePath);'

显示错误 消息:OpenQA.Selenium.ElemenyNotVisibleException:元素当前不可见,因此可能无法与之交互。

对以上内容的任何帮助将不胜感激

提前谢谢你

【问题讨论】:

  • 哪一行会报错?是FindElement(By.Id("FileUpload"))吗?
  • 是的,这就是引发错误的那个
  • 你为什么要处理两个不同的元素?在第 7 行,你等待一个元素出现,id 为 "upload",但是在第 11 行你尝试找到一个不同的元素,id 为 "FileUpload" - 这是故意的吗?

标签: c# file-upload selenium selenium-webdriver opacity


【解决方案1】:

你说它可以在调试中工作,但不能完全运行?

99% 的情况发生这种情况是因为等待问题。

您正在等待元素出现但不等待它可见,这解释了错误 (NotVisibleException)。尝试等待元素可见。

【讨论】:

  • 支持@MrTi。但是,这是一种棘手的文件上传,所以我真的会使用 js 来设置所需的值。
  • 谢谢你,我添加了一个 Thread.Sleep(10000) 并且它似乎间歇性地工作。我将尝试其他值并报告亚历山大:我可以使用什么 js?我在那个领域不太好。
  • 查看这份文档,了解不同的等待方式。 Thread.Sleep() 可能是最糟糕的等待形式。 assertselenium.com/2013/01/29/webdriver-wait-commands
【解决方案2】:

而不是SendKeys 尝试用js设置需要的值

【讨论】:

  • 一个js的例子将不胜感激。
  • 如果元素不可见,这可能会起作用;但为什么有必要这样做呢?该测试应该复制正常的用户操作,即与可见元素交互。
  • @user2471464 请贴出IWebElement fileUpload的完整标签内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2021-08-09
  • 2023-03-18
相关资源
最近更新 更多