使用 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 需要切换上下文。这是解决方案:
- 遍历页面上的框架列表
- 当你找到
包含您的元素的框架(例如:
frame[i].document.getElementById("yourElementId")
),抢名字
框架
在解码时像这样切换上下文:
$this->I->switchToIFrame('frameName');
问题:当我从我的域重定向到 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 需要切换上下文。这是解决方案:
- 遍历页面上的框架列表
- 当你找到
包含您的元素的框架(例如:
frame[i].document.getElementById("yourElementId")
),抢名字 框架 在解码时像这样切换上下文:
$this->I->switchToIFrame('frameName');