当我运行以下程序时,它运行得非常好,直到我在webclip部分上填写了表格.一旦到达那里,它说找不到ID“ txtTemplateName”.我直接从Inspecting元素复制并粘贴了该名称.并不是说我没有给它足够的时间来加载,我在过去已经给了我整整5秒钟的时间,只是为了确保,仍然一无所获.
using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using System.Diagnostics; using System.Linq; namespace Build1Evan { class Program { static void Main(string[] args) { IWebDriver driver1 = new FirefoxDriver(); driver1.Navigate().GoToUrl("URL"); Process.Start(@FILE"); // This is just an Auto IT Script to get me by a login window bool loginCheck1 = driver1.FindElements(By.Id("btnLoginAgain")).Count() > 0; if (loginCheck1 == true) { driver1.FindElement(By.Id("btnLoginAgain")).Click(); } System.Threading.Thread.Sleep(500); driver1.FindElement(By.LinkText("Configuration")).Click(); System.Threading.Thread.Sleep(500); driver1.FindElement(By.LinkText("Payloads")).Click(); System.Threading.Thread.Sleep(500); driver1.FindElement(By.PartialLinkText("WebClip")).Click(); // BELOW IS WHERE I ENCOUNTER THE ISSUE System.Threading.Thread.Sleep(500); driver1.FindElement(By.Id("txtTemplateName")).SendKeys("TESTING"); } } }
@H_502_7@当我尝试选择表单中的任何其他元素时,也遇到了错误,而是选择按钮或其他文本字段.
编辑:PHOTO询问
编辑2:PHOTO 2也是一个供参考,我使用Selenium IDE没问题,它很容易就能选择元素并填写它.
解决方法:
根据您的屏幕截图,我认为您的应用通过使用< object id =“ panelcontentobject” data =“.嵌入了表单. 如果表单确实位于对象标记中,则必须创建该对象标记的WebElement,然后使用JavaScriptExecutor检索属性或与表单进行交互.
例如,IWebElement objectTag= driver.FindElement(By.Id("panelcontentobject")); IJavaScriptExecutor js = driver as IJavaScriptExecutor; js.ExecuteScript("return (arguments[0].contentDocument.getElementById('txtTemplateName')).click()",objectTag);
@H_502_7@请参阅示例从http://aksahu.blogspot.com/2015/05/dealing-with-object-tags-in-selenium-webdriver.html?m=1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。