Не удается выбрать 2-ю строку в веб-таблице, использующей описание языка, в UFT

#hp-uft

#hp-uft

Вопрос:

Я написал приведенный ниже фрагмент кода, чтобы выбрать строку из веб-таблицы для ее обработки. Код успешно выбирает / открывает первую строку, однако, когда он пытается дважды щелкнуть по второй строке, он выдает ошибку «Неуказанная ошибка». Веб-таблица содержит 7 строк, тем не менее, происходит сбой. Может ли кто-нибудь указать, что может быть причиной сбоя, пожалуйста?

 Set objDesc = Description.Create
objDesc("micclass").Value = "WebTable"
objDesc("html tag").Value = "Table"
Set objList = Browser("3 - Employee Assign Benefits").Page("3 - Employee Assign Benefits").Frame("APPFRAMEWORK").ChildObjects(objDesc)
oCount = objList.Count
For k =0 To oCount - 1
    colName = objList(k).GetRoproperty("cols")
    If Trim(colName) = 21 Then 'This is the right table
        objList(k).Highlight
        rows= objList(k).GetROProperty("rows")
        For i = 1 To rows
            x = objList(k).ChildItem(i,1,"WebElement",0).GetROProperty("abs_x")
            y = objList(k).ChildItem(i,1,"WebElement",0).GetROProperty("abs_y") 
            Wait(2)
            Set obj = CreateObject("Mercury.DeviceReplay")
            obj.MouseDblClick x,y,LEFT_MOUSE_BUTTON
            Call ClickVerifyElement(Browser("3 - Employee Assign Benefits").Page("3 - Employee Assign Benefits").Frame("APPFRAMEWORK").WebEdit("ben_elig_dte"), "ben_elig_dte", "WebEdit", Parameter("elig_date"))
            Call ClickVerifyElement(Browser("3 - Employee Assign Benefits").Page("3 - Employee Assign Benefits").Frame("APPFRAMEWORK").WebList("emp_state_withd_opt_decode"), "emp_state_withd_opt_decode", "WebList", Parameter("withhold_ind"))
            Browser("3 - Employee Assign Benefits").Page("3 - Employee Assign Benefits").Frame("APPFRAMEWORK").WebButton("Save").Click
        Next
        Exit For
    End If
Next
  

Комментарии:

1. каковы значения x и y в момент сбоя? Вы определили LEFT_MOUSE_BUTTON где-нибудь значение, относящееся к левой кнопке мыши? Вы убедились, что в каждой строке есть WebElement , из которых вы можете получить значения x и y ?

2. Да, в каждой строке есть веб-элемент. Я жестко закодировал ее, как показано ниже, вместо параметризации значений. В этом случае код открывает указанную строку должным образом без каких-либо проблем. x = objList(k). Дочерний элемент(2,1,»WebElement»,0).GetROProperty(«abs_x») y = objList(k). ChildItem(2,1,»WebElement»,0).GetROProperty(«abs_y») Даже во время параметризации код может выбрать значение во время первой итерации цикла for, и получение не удалось только на последующей итерации.

3. Учитывая, что после двойного щелчка по элементу первой строки вы затем запускаете эту ClickVerifyElement функцию, за которой следует Save щелчок, я бы сказал, что, вероятно, это objList фактически выходит за рамки после того, как выполняется действие с первой строкой, из-за какого-либо изменения или другого. Приостановите скрипт после первого щелчка и посмотрите, по-прежнему ли коллекция действительна и правильно ли ссылается на ваш список таблиц.