【问题标题】:How to type into text box generated dynamically如何在动态生成的文本框中输入
【发布时间】:2019-01-06 15:34:21
【问题描述】:

我正在尝试将数据输入到动态生成的文本框中,但出现以下错误:

找不到该选择器对应的UI元素:<webctrl id='dp1545483054838' tag='INPUT' />

重现问题的步骤:

  1. 转到www.mockaroo.com
  2. 将性别重命名为日期
  3. 点击类型下的性别并在搜索中输入日期,然后选择日期

这将显示从日期到当前的两个字段(动态生成)。我想更改这些字段中的日期。

【问题讨论】:

  • 我无法重现错误,对我来说一切正常
  • 确认,一切正常(在 2018.3 测试)。使用 Chrome 或 Firefox 时,请确保您安装了浏览器扩展程序(在 Design Studio 中,单击开始 -> 工具,然后选择适当的扩展程序)。

标签: uipath


【解决方案1】:

与 cmets 类似,我在创建选择器以定位 start of rangeend of range 日期字段时没有任何问题。

但是,实际上,由于表单是动态的,因此每次加载页面或引入新字段时,字段的 ID 都会发生变化,因此我不建议使用 ID 来选择字段。

我在页面上稍微涉猎了一下以感受一下,这里有一些我注意到的花絮可能会对你有所帮助。在没有看到您已经尝试过的示例的情况下,这只是对您要达到的目标的猜测。


Ui Explorer 默认生成以下内容

<html app='chrome.exe' title='Mockaroo - Random Data Generator and API Mocking Tool | JSON / C*' />
<webctrl id='dp1546757265980' tag='INPUT' />
  1. 如果您希望选择器是相对的,请检查您是否在选择器的范围内,或者如果使用绝对选择器,请确保您正确定义了有效的层次结构。
  2. 确定一个良好的层次结构和一些要使用的属性,这样您就可以指定所需的字段,同时不使用过于模糊或永远不会两次相同的属性或值

我注意到开始日期和结束日期字段的第一件事是它们分别具有title 属性start of rangeend of range 值。我认为这将是一个好的开始,对我自己来说,我最终添加了更多属性。

<webctrl tag='INPUT' aaname='start of range' name='*min_date*' parentclass='options' parentid='fields' />

进一步考虑这一点,由于表单的性质,您可能有多个 Date 类型的选项字段,因此我将选择器锚定到 date 名称字段以确保我的目标是正确的选项。

在添加锚点时,我注意到在将名称字段从“性别”更改为“日期”后,HTML 代码没有更新值以反映这一点,因此它仍然具有原始内容

<input placeholder="enter name..." class="column-name form-control" spellcheck="false" type="text" value="gender" name="schema[columns_attributes][4][name]" id="schema_columns_attributes_4_name" uipath_custom_id="1">

因此,我没有在第二次选择/锚定名称字段时产生误导,而是添加了一个 Find Element 活动并创建了一个输出 Ui 元素变量以传递给其他活动。

Sample XAML project

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2018-06-27
    • 2014-12-07
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多