Acumatica Modern UI自动化测试:无法定位Payment Method ID元素咨询
Acumatica Modern UI自动化测试:定位Payment Method ID字段的解决方案
重新生成适配Modern UI的Wrapper
默认ClassGenerator.exe生成的是Classic UI兼容的定位器,你需要修改ClassGenerator.exe.config配置文件,指定生成Modern UI适配的Wrapper:- 打开
ClassGenerator.exe.config,找到<appSettings>节点 - 添加配置项:
<add key="UIMode" value="Modern" /> - 重新运行ClassGenerator.exe生成新的Wrapper类
新生成的代码会采用Modern UI特有的元素定位逻辑,不再依赖Classic UI那种固定格式的WebForms ID(如ctl00_phF_form_edPaymentMethodID)。
- 打开
手动调整元素定位器(无需重新生成Wrapper)
若不想重新生成Wrapper,可直接修改现有代码的定位逻辑,利用Modern UI元素的专属属性定位:- 用浏览器开发者工具(F12)打开Modern UI目标页面,找到Payment Method ID字段对应的元素
- 查看元素的
data-field属性(Modern UI的Acumatica元素普遍带有该属性,值为字段内部名称,比如PaymentMethodID) - 将原有的ID定位替换为CSS选择器定位,示例代码:
// 原Classic UI定位方式 driver.FindElement(By.Id("ctl00_phF_form_edPaymentMethodID")); // 修改为Modern UI兼容的定位方式 driver.FindElement(By.CssSelector("[data-field='PaymentMethodID']"));
这种方式更稳定,因为Modern UI的元素ID是动态生成的,不像Classic UI那样固定。
验证字段的实际绑定
确认Modern UI页面中Payment Method ID字段的内部标识是否与Classic一致:部分场景下Modern UI会微调字段标识,通过开发者工具查看元素的data-field或data-container属性,确保定位的是正确字段。
内容的提问来源于stack exchange,提问作者vachmir
相关产品推荐
相关产品推荐

