在Ranorex上可以看到如何等待元素?

时间:2016-09-20 09:44:41

标签: testing end-to-end web-testing ranorex

在Ranorex中,我找到了如何等待元素的存在,但我找不到如何等待元素可见。

enter image description here

我想做同样的事情,但我想等到元素可见。不幸的是,我只看到ExistNot Exist作为WaitFor语句的可能值。在我的情况下,测试是不可靠的,因为尽管元素存在,有时会启动点击,但仍然没有显示

你知道怎么做吗?

3 个答案:

答案 0 :(得分:2)

您可以在回购路径TabX=np.array([0.0]*len(LongueursFissureGlobale)) TabY=np.array([0.0]*len(CourbeInterpolationGlobale)) 中添加此元素并使用[@visible='true']

WaitForExists

答案 1 :(得分:1)

您可以使用Visible属性等待元素:

DateTime start = DateTime.Now;

while (Repository.Element.Visible)
{               
    Delay.Seconds(1);

    if(System.DateTime.Now.Subtract(start).TotalSeconds > MaxWaitTime)
    {                   
        Validate.Fail("");
    }
}

答案 2 :(得分:0)

对于Web元素,很难知道项目是否存在,是否可见等。

通过将DOM页面的位置和宽度与我的示例中的滑动菜单位置和宽度进行比较,我获得了可靠性,如下所示:

    Public Function IsMenuVisible() As Boolean
        Dim menuVisible As Boolean

        'Get page position and width
        Dim pageXPosition As Integer = repo.WebPage.Self.Element.ScreenLocation.X
        Dim pageWidth As Integer = repo.WebPage.Self.Element.ScreenRectangle.Width
        'Get configuration menu position and width
        Dim menuXPosition As Integer = repo.WebPage.Menu.Self.Element.ScreenLocation.X
        Dim menuWidth As Integer = repo.WebPage.Menu.Self.Element.ScreenRectangle.Width

        'If menu top right location is >= web page size (out of screen)
        If menuXPosition + menuWidth > pageXPosition + pageWidth Then
            Report.Info(String.Format("Configuration menu is hidden (menuXPositon = {0}, pageXPosition = {1}, pageWidth = {2}, menuWidth = {3}).", menuXPosition, pageXPosition, pageWidth, menuWidth))
            menuVisible = False
        Else
            Report.Info("Configuration menu is currently visible.")
            menuVisible = True
        End If

        Return menuVisible
    End Function

在我的示例中,菜单位于页面右侧。请根据您的需要进行修改。

然后,执行简单的用户代码循环多次,等待菜单显示如下:

        Public Sub WaitForMenuToAppear()
        Dim retries As Integer = WaitForMenuToAppearRetries
        While Not IsMenuVisible() AndAlso retries > 0
            retries -= 1
            Report.Info(String.Format("Waiting for configuration menu to be visible ({0}).", retries))
            Delay.Duration(1000)
        End While

        If Not IsMenuVisible() Then
            Throw New RanorexException(String.Format("Menu did not appear within '{0}' seconds.", WaitForMenuToAppearRetries))
        Else
            Report.Info("Menu is visible.")
        End If
    End Sub

我必须这样做,因为滑动总是可见的。使用Ranorex Spy的高亮功能,红色矩形被绘制在网页的查看区域之外。

我留给你完成这个例子。

希望这会有所帮助......