首页 文章

如何使用UFT / VBSCRIPT单击webtable单元格

提问于
浏览
2

我只需要点击一个特定的单元格(2,1) . 我不确定如何点击该单元格 . 就我而言,它总是与同一个细胞相同 .

我有这个代码只读取单元格(2,1)中的值 . 之后,我该如何点击该单元格?整个单元格是一个链接 . 我不需要使用for循环来找到 Value . 我只需要直接点击那个单元格 .

myvalue= Browser("aa").Page("aa").WebTable("tb").GetCellData(2,1)

请指教 .


enter image description here


Update # 1 1

myvalue= Browser("aa").Page("aa").WebTable("tb").GetCellData(2,1)

'value returns“dsfsdf sdfsdfdsf DOB:1/01/2015会员ID:8587”

我用铬检查过细胞 . 我看到了这个:

<td class="name" rowspan="1">
                                            <a href="/id/5858"><span></span></a>
                                            <h3>
                                            dsfsdf sdfsdfdsf
                                            </h3>
                                            <table>
                                                <tbody><tr>
                                                    <td>DOB:</td>
                                                    <td>1/01/2015</td>
                                                </tr>
                                                <tr>
                                                    <td>Member ID:</td>
                                                    <td>8587</td>
                                                </tr>
                                            </tbody></table>
                                        </td>
  • 在前端,我看到整个单元格是一个链接,但在源代码中,您只能看到一个元素是一个链接 . 我认为他们已经应用了css来将细胞作为一个链接 .

我应该首先进入单元格,然后找到链接,然后单击它?我整天研究但没有运气 . 请指教 .


Update # 2

这是一个点网页 .

set rowObject = Browser("aa").Page("aa").WebTable("tb").Object.getElementsByTagName("tr").item(1)

如果我保留项目(1),它会按预期点击第二行 . 索引0是 Headers . 索引1是第2行 .

如果我改为第(2)项,它什么都不做 .

如果我改为第(4)项,则点击第3行(索引2) . 相反,它应该单击第5行(索引4) .

如果我改为第(5)项,它什么都不做 . 奇怪的 . 所以这个答案并不是一贯的 . 我认为UFT在页面开发方面感到困惑 .

我接受了html源代码,然后在本地创建了一个html文件 . 将所有锚文本从空更改为某些文本:

<a href="/id/5554"><span>id2</span></a>

然后我使用了您发布的原始代码 . 对于所有行,它的工作正常 .

我将联系开发团队,看看他们是否可以添加锚文本,然后应用css来隐藏它 . 他们很可能不会做任何事情 .

我们也可以在这里将“链接”描述为“a”标签,因此UFT将查找“a”标签而不是链接文本/锚文本 .

set objLink = Browser("aa").Page("aa").WebTable("tb").ChildItem(intRow, intCol, "Link",0)

2 回答

  • 0

    使用webTable的 childitem 方法 .

    尝试以下方法:

    Dim objLink, intRow, intCol
    intRow = 2
    intCol = 1
    set objLink = Browser("aa").Page("aa").WebTable("tb").ChildItem(intRow, intCol, "Link",0)
    if objLink.exists(3) then
        objLink.Click
    end if
    

    Update 2:

    由于webtable单元格内部的链接没有任何与之关联的文本,因此UFT无法使用 ChildItem 方法找到它 . 这也可以使用webtable的 ChildItemCount 方法进行验证 . 因此,我们现在需要使用object的本机方法,如下所示:

    set rowObject = Browser("aa").Page("aa").WebTable("tb").Object.getElementsByTagName("tr").item(1)      'HERE item(1) means the 2nd item or 2nd row. It is a zero-based index, hence for 2nd row, we write index=1
    set colObject = rowObject.getElementsByTagName("td").item(0)     'item(0) means 1st item or 1st column as it is a zero based index
    Set collectionLinks = colObject.getElementsByTagName("a")        'getting a collection of all the links present inside cell(2,1)
    collectionLinks.item(0).Click                                    'item(0) means the 1st link in the cell(2,1)
    
  • 1

    尝试以下子程序 .

    Note: 您应该知道要单击的对象的索引值 . 尝试使用Object Spy来了解项目的索引 . 如果设置了错误的索引,则可能无法单击所需的元素 .

    Sub ClickWebTableIndex(BrowserPropertyName, BrowserPropertyValue, PagePropertyName, PagePropertyValue, WebTablePropertyName, WebTablePropertyValue, ChildObjectClassName, ChildObjectPropertyName, ChildObjectPropertyValue, IndexValue)
    
        Set oBrowser = Description.Create()
        oBrowser("micclass").Value = "Browser"
        oBrowser(BrowserPropertyName).Value = BrowserPropertyValue
    
        Set oPage = Description.Create()
        oPage("micclass").Value = "Page"
        oPage(PagePropertyName).Value = PagePropertyValue
    
        Set oWebTable = Description.Create()
        oWebTable("micclass").Value = "WebTable"
        oWebTable(WebTablePropertyName).Value = WebTablePropertyValue
    
        Set childObject = Description.Create
        childObject("micclass").value = ChildObjectClassName
        childObject(ChildObjectPropertyName).value = ChildObjectPropertyValue
    
        Browser(oBrowser).Page(oPage).WebTable(oWebTable).ChildObjects(childObject)(IndexValue).FireEvent "OnClick"
    
    End Sub
    

相关问题