我有一个Selenium WebDriver测试,我在文本输入框中输入了一些文本
var input_Note = Driver.Instance.FindElement(By.Id("note"));
input_Note.SendKeys("test");
然后我尝试单击“保存”按钮,但它不起作用。我之前使用的是Coded UI,其中有一个SetFocus元素,可以将焦点指向您所定位的元素。 Selenium有类似的东西吗?
var button_Save = Driver.Instance.FindElement(By.Id("save"));
button_Save.Submit();
答案 0 :(得分:-1)
有时,根据页面的加载方式,它将存在,然后不存在,然后再次存在。我发现在元素上等待是一个好主意,有时会为特定元素背靠背两个等待,这将解决这个问题(我想说一个双重等待的编程修复需要...屏幕闪烁那时太多了)。这实际上取决于应用程序的加载模式。
WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(10));
wait.Until (d=> Driver.Instance.FindElement(By.Id("save")));
如果它是一个按钮,我也会使用.click。一般来说,它应该是一个提交操作,但它并不总是必须是提交操作。在某些情况下,您可能需要获得焦点...不应该以这种方式编程,但如果是,您可以使用Actions类并将鼠标移动到元素,然后执行单击操作元素。
//C# example:
OpenQA.Selenium.UI.Interactions.Actions actions = new OpenQA.Selenium.UI.Interactions.Actions();
actions.MoveToElement([Instance of Web Element goes here]).Perform();
actions.Click([Instance of Web Element goes here]).Perform();
一般情况下,您可以使用actions.Click,但我想我会同时使用。
以上其中一项应该可以正常工作。如果它不起作用,请提供您使用Selenium获得的特定错误消息以及正在使用的页面的特定html结构。