Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 幻影-Can';t单击页面上的任何元素_Javascript_Youtube_Phantomjs - Fatal编程技术网

Javascript 幻影-Can';t单击页面上的任何元素

Javascript 幻影-Can';t单击页面上的任何元素,javascript,youtube,phantomjs,Javascript,Youtube,Phantomjs,您使用的是哪个版本的PhantomJS?提示:运行phantomjs--version 2.1.1 哪些步骤会重现问题? 1.1使用:phantom app.js运行第一个示例 1.2打开youtube.png 2.1使用:phantom app.js运行第二个示例 2.2openyahoo.png 您使用的是哪种操作系统? macOS Sierra 10.12.4(16E195) 您使用的是二进制PhantomJS还是从源代码处编译的? 我通过brew安装phantomjs安装了它 请在下面提

您使用的是哪个版本的PhantomJS?提示:
运行phantomjs--version

2.1.1

哪些步骤会重现问题?

1.1使用:
phantom app.js运行第一个示例

1.2
打开youtube.png

2.1使用:
phantom app.js运行第二个示例

2.2
openyahoo.png

您使用的是哪种操作系统?

macOS Sierra 10.12.4(16E195)

您使用的是二进制PhantomJS还是从源代码处编译的?

我通过
brew安装phantomjs
安装了它

请在下面提供任何其他信息。

我写了一个脚本,试图登录YouTube。当谷歌更新了他们的风格后,我修改并重写了它。据我所知,phantomJS无法单击页面上的任何元素。我不知道为什么。。。页面上的所有元素都存在,ID正确。以下是源代码:

console.log('Loading a web page');
var page = require('webpage').create();
var url = 'https://accounts.google.com/signin/v2/identifier?hl=en&uilel=3&service=youtube&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Ffeature%3Dsign_in_button%26next%3D%252F%26hl%3Den%26action_handle_signin%3Dtrue%26app%3Ddesktop&flowName=GlifWebSignIn&flowEntry=ServiceLogin';
page.open(url, function() {
  page.evaluate(function() {
    document.getElementById('identifierId').value = "test@test.com";
    document.getElementBtId('identifierNext').click();
  });
  setTimeout(function(){
    page.render("youtube.png");
    phantom.exit();
  }, 5000);
});
我重写了这段代码,以便在其他页面(Yahoo)上测试它。一切正常。代码如下:

console.log('Loading a web page');
var page = require('webpage').create();
var url = 'https://www.yahoo.com/';
page.open(url, function() {
  page.evaluate(function() {
    document.getElementById('uh-search-box').value = "test@test.com";
    document.getElementById('uh-search-button').click();
  });
  setTimeout(function(){
    page.render("yahoo.png");
    phantom.exit();
  }, 5000);
});

怎么了?你以前有过类似的情况吗?

一个页面上的所有元素都存在,ID都是正确的
如果你只做了一个截图
youtube.png
?@Vaviloff不,我能做两个截图。youtube的屏幕:,yahoo的屏幕:这不是我的观点。您已经制作了屏幕截图,但您确定您使用的选择器确实出现在登录页面上吗?(很可能不是)。你应该用程序检查一下。屏幕大小是400px宽,我敢打赌谷歌认为PhantomJS是一款移动浏览器,并将其插入了移动HTML中。@Vaviloff是的,它们是存在的。我还使用不同的屏幕大小测试了它-普通桌面应用程序等。如果选择器不存在或屏幕大小无效,我不会问这个问题。在这种情况下,请尝试发送“真实”事件: