首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Atata -使用Table<>类无法定位元素

Atata -使用Table<>类无法定位元素
EN

Stack Overflow用户
提问于 2018-03-06 15:43:07
回答 1查看 261关注 0票数 2

当我使用Table<>类试图引用表中的某个元素时,会得到以下错误:

代码语言:javascript
复制
Message: OpenQA.Selenium.NoSuchElementException : Unable to locate element: By.XPath: .//td[1]/descendant-or-self::a
Context element:
Tag: tr
Location: {X=62,Y=273}
Size: {Width=1140, Height=37}
Text: Order Date User Address Origin Address Destination My Reference POD Status

表格来源:

代码语言:javascript
复制
<table class="table table-striped">
    <tr class="text-nowrap">
        <th>Order</th>
        <th>Date</th>
        <th>Customer</th>
        <th>User</th>
        <th>Address Origin</th>
        <th>Address Destination</th>
        <th>My Reference</th>
        <th>POD</th>
        <th>Status</th>
    </tr>
        <tr>
            <td class="text-nowrap">
                <a href="/Customer/Request/Show/180305-NQHHGU">180305-NQHHGU</a>
            </td>
            <td>05.03.2018</td>
            <td>Merchant Advance (2M7)</td>
            <td>Barry Manilow</td>
            <td>757 RUE GUY MONTREAL</td>
            <td>242 LAVERENDRYE AVE CHURCHILL</td>
            <td></td>
            <td>
            </td>
            <td class="text-nowrap">…</td>
        </tr>

页面对象源:

代码语言:javascript
复制
public class OrdersPage : BasePage<_>
{
    public Table<OrdersTableRow, _> Orders { get; private set; }

    public class OrdersTableRow : TableRow<_>
    {
        [FindByColumnHeader("Order")]
        public LinkDelegate<ShipmentOrderPage, _> Order { get; private set; }

        public Date<_> Date { get; private set; }

        public Text<_> Customer { get; private set; }

        public Text<_> User { get; private set; }
        …
        …
    }
}

我试着在测试中做这样的事情:

代码语言:javascript
复制
    Go.To<OrdersPage>().
        Orders.Rows[x => x.Order.Content().Value == order.OrderNumber].Order();

我想是关于我的桌子没有<thead>标签。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-06 18:36:32

你是正确的。开箱即用的Table控件默认使用在thead/tr中包含<th>元素的<table>。在Atata处理常规/数据行时跳过此类行。

可以检查TableRow类是否包含以下控件定义:

代码语言:javascript
复制
[ControlDefinition("tr[parent::table or parent::tbody]", ComponentTypeName = "row")]

在您的示例中,带有标题的第一行被认为是一个常规行,Atata试图在该行中找到一个链接,该链接在该行中缺失。

但是在Atata,您可以轻松地重新配置这些东西。只需覆盖[ControlDefinition]OrdersTableRow类,如下所示:

代码语言:javascript
复制
[ControlDefinition("tr[td]", ComponentTypeName = "row")]
public class OrdersTableRow : TableRow<_>
{
//...
}

这样,Orders.Rows将只处理包含<td>元素的<tr>元素,跳过第一行。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49134745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档