Paypal Sandbox的代码:无法选择注入的Ajax字段

时间:2016-07-18 16:53:47

标签: selenium xpath codeception

问题:当我从我的域重定向到sandbox.paypal.com时,我无法使用XPATH选择器选择输入字段。发现未找到元素的错误会被抛出。我也尝试过使用js选择器,但是我收到以下错误:无法设置null的属性'value'。

我尝试过手动访问页面并应用xpath,它运行得非常好。有什么想法吗?

这是有问题的Xpath脚本:

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

这里的JS脚本也失败了:

return document.querySelector('login_emaildiv input';

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

我和chromedriver以及firefox一起试过这个。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用如下所示的JavaScriptExecutor

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

}

答案 1 :(得分:0)

问题在于iFrames。由于内容被注入iFrame,因此代码需要切换上下文。这是解决方案:

  1. 循环浏览页面上的框架列表
  2. 当你找到了 有你的元素的框架(例如: frame[i].document.getElementById("yourElementId")),抓住名字 框架
  3. 在代码中切换上下文,如下所示:

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