使用 Paypal Sandbox 进行解码:无法 select 注入 Ajax 字段

Codeception with Paypal Sandbox: Cannot select injected Ajax Fields

问题:当我从我的域重定向到 sandbox.paypal.com 时,我无法使用 XPATH select 或 select 输入字段。抛出一个错误说找不到元素。我也尝试过使用 js select 或,但出现以下错误:无法设置 属性 'value' 为 null。

我试过手动访问该页面并应用 xpath,它工作得很好。有什么想法吗?

这是有问题的 Xpath 脚本:

'//input[@name="login_email"]';

这是同样失败的 JS 脚本:

return document.querySelector('login_emaildiv input';

我注意到表格被注入到 DOM。有人知道解决方法吗?

我已经用 chromedriver 和 firefox 试过了。

您可以尝试像下面这样使用 JavaScriptExecutor

if (driver instanceof JavascriptExecutor) {
        ((JavascriptExecutor) driver).executeScript("document.getElementsByName('login_email')[0].value='Enter your Value';");

}

问题出在 iFrame 上。由于内容被注入到 iFrame 中,codeception 需要切换上下文。这是解决方案:

  1. 遍历页面上的框架列表
  2. 当你找到 包含您的元素的框架(例如: frame[i].document.getElementById("yourElementId") ),抢名字 框架
  3. 在解码时像这样切换上下文:

    $this->I->switchToIFrame('frameName');