使用Selenium WebDriver设置焦点

时间:2014-03-24 01:06:43

标签: javascript selenium-webdriver

我有一个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();

1 个答案:

答案 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结构。