Selenium无法启用Rally支付表单字段:问题求助及解决方案
解决Rally支付表单(Angular/React)的Selenium自动化测试问题
问题描述
在使用C# Selenium对基于Angular和React构建的Rally支付表单做自动化测试时,遇到两类关键问题:
- 信用卡相关字段(卡号、有效期等)各自处于独立的iframe中,测试代码无法识别到任何支付字段;
- 只有手动点击信用卡号字段后,表单才会被启用,此时测试代码能正常填充字段,但尝试用提交触发错误处理、Tab切换元素、等待元素加载等方式,都无法自动触发表单启用。
解决方案
针对动态状态元素的定位策略
表单元素的标签会根据untouched/touched/changed的状态动态变更,必须基于未触碰(untouched)状态的元素编写定位表达式,避免点击字段后状态变化导致XPath等定位器失效。自定义输入方法解决
SendKeys截断问题
Selenium原生的SendKeys存在输入截断的情况,可通过Actions类封装自定义输入方法来解决:
public static void TypeAngular(string value, IWebElement element) { WaitForElementEnabled(element); var builder = new Actions(_webDriver); var typeAngularText = builder.MoveToElement(element).Click().SendKeys(value).Build(); typeAngularText.Perform(); }
内容的提问来源于stack exchange,提问作者Dazed
相关产品推荐
相关产品推荐

