Div"模态内容"在远程计算机上运行鼠标指针悬停在控件上时,控件不会出现

时间:2017-02-07 12:45:06

标签: c# selenium internet-explorer selenium-webdriver

我试图在Selenium上执行远程计算机上C#编写的IE 11脚本,用于持续集成。我的应用程序有一个div modal-content panel,其中包含一些字段和一个“保存”按钮。点击保存按钮后,会出现另一个div modal-content popup。但它仍然隐藏,除非我将鼠标指针悬停在它上面(不只是在屏幕上的任何地方,而是在它上面)。

因此我的剧本失败了。

  

注意:脚本在我的本地计算机上执行得非常好。也在   远程机器它不会一直显示这个问题!它   随机发生。

请帮忙。

根据我们的自动化框架设计,我们有以下组件:

文件A - 此类文件包含测试步骤 - 调用函数。代码的以下部分点击了编辑链接,更新了一些内容,点击了另一个弹出窗口上显示的“保存”按钮,然后单击模式上的“保存”按钮。

private FormDesigner FormDesigner { set; get; }

// Clicks on the edit link
FormDesigner = FormPanel.ClickEditLink();

// Update a few things
FormDesigner.RemoveFormFields(2);

// Clicks on the Save button 
FormDesigner.ClickSave();

// Clicks on the Save button present on the div-modal
FormDesigner.ClickSaveOnSaveForm();

文件B - 此类文件充当包含从文件A调用的所有函数的库。例如,

public FormDesigner ClickEditLink()
{
    EditLink.Click();
    return new FormDesigner(_webDriver);
}

public void RemoveFormFields(int fieldToRemove)
{
    FormDesignerFields(FormFieldRemove).ElementAt(fieldToRemove).Click();
}

public void ClickSaveButton()
{
    FormSaveButton.Click();
    Thread.Sleep(2000);
}

public void ClickSaveOnSaveForm()
{
    SaveFormSaveButton.Click();
    Thread.Sleep(2000);
}

文件C - 此类文件包含webelement的所有元素定位器(XPath)。文件B中存在的函数使用这些定位器来执行任何操作。例如,

private const string FormFieldRemove = <XPath>;
private const string FormLnk = <XPath>;
private const string FormDesignerBtn = <XPath>;
private const string SaveFormSaveBtn = <XPath>;

protected Link EditLink
{   
    get { return new Link(_webDriver.FindElement(By.XPath(FormLnk)), "Edit", true); }
}

private ReadOnlyCollection<IWebElement> FormDesignerFields(string formFields)
{
    return _webDriver.FindElements(By.XPath(formFields));
}

protected Button FormSaveButton
{
    get { return new Button(_webDriver.FindElement(By.XPath(FormDesignerBtn))); }
}

protected Button SaveFormSaveButton
{
    get { return new Button(_webDriver.FindElement(By.XPath(SaveFormSaveBtn))); }
}

文件D - 此类文件包含可在特定Web组件上执行的所有操作。例如,这里我们显示了Button和Link。例如,

按钮类文件:

private const string _buttonXPath = ".//button[contains(.,'{0}')]";
private const string _buttonValueXPath = ".//input[@value='{0}']";
private IWebElement _button;

public Button(IWebElement webElement, string name, bool byValue)
{
    _button = byValue ?   webElement.FindElement(By.XPath(string.Format(_buttonValueXPath, name))) : webElement.FindElement(By.XPath(string.Format(_buttonXPath, name)));
}

public void Click()
{
    _button.Click();
}

链接类文件:

private const string _linkXPath = ".//a[text()='{0}']";
private const string _linkContXPath = ".//a[contains(.,'{0}')]";
private IWebElement _link;

public Link(IWebElement webElement, string value, bool useXpath)
{
    _link = useXpath ? webElement.FindElement(By.XPath(string.Format(_linkXPath, value))) : webElement.FindElement(By.XPath(string.Format(_linkContXPath, value)));
}

public void Click()
{
    _link.Click();
}

0 个答案:

没有答案