Javascript 幻影-Can';t单击页面上的任何元素
您使用的是哪个版本的PhantomJS?提示: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--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
安装了它
请在下面提供任何其他信息。
我写了一个脚本,试图登录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是的,它们是存在的。我还使用不同的屏幕大小测试了它-普通桌面应用程序等。如果选择器不存在或屏幕大小无效,我不会问这个问题。在这种情况下,请尝试发送“真实”事件: