4
我的脚本访问的iFrame试图访问这个登录页面:与Phantomjs的Watir
http://instagram.com/accounts/login
与PhantomJS,的Watir。
登录页面的问题是,登录文本框在一个iFrame:
<iframe class="hiFrame" data-reactid=".0.0.0.1.0.1.0.0.$frame" src="https://instagram.com/accounts/login/ajax/?targetOrigin=https%3A%2F%2Finstagram.com" scrolling="no" seamless="">
#document
<!DOCTYPE html>
<html class="hl-en not-logged-in " lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body class="LoginFormChrome ">
<div class="LoginFormPage" data-reactid=".0">
<form data-reactid=".0.0">
<p class="lfField" data-reactid=".0.0.0">
<label class="lfFieldLabel" data-reactid=".0.0.0.0"></label>
<input class="lfFieldInput" type="text" data-reactid=".0.0.0.1" value="" autocorrect="false" autocapitalize="false" maxlength="30" name="username"></input>
</p>
<p class="lfField" data-reactid=".0.0.1"></p>
<p class="lfActions" data-reactid=".0.0.2"></p>
</form>
</div>
<div id="fb-root" class=" fb_reset"></div>
</body>
</html>
</iframe>
这里是我的代码(红宝石):
B.goto HOME_URL + LOGIN
sleep(5)
puts B.iframe(:class => "hiFrame").text_field(:name => "username").exists?
B.iframe(:class => "hiFrame").text_field(:name => "username").set USERNAME
B.iframe(:class => "hiFrame").text_field(:name => "password").set PW
#puts B.iframe(:class => "hiFrame").text_field(:name => "username").exists?
B.iframe(:class => "hiFrame").button.click
作品使用Firefox浏览器完全正常,但当我切换到Phantomjs时,它不识别
B.iframe(:class => "hiFrame").text_field(:name => "username").exists?
并停止脚本。返回“true”为:
B.iframe(:class => "hiFrame").exists?
但这就是它的程度。我如何使用phantomjs和watir登录到instagram?
谢谢。
它看起来像框架显示Facebook的跨域信使助手。您可能需要了解PhantomJS是否支持跨域iframe。 – 2014-09-03 16:39:39
如果PhantomJS没有,会发生什么?有没有其他方法可以无界限地访问iframe? – 2014-09-03 21:08:47
你可以试试[headless gem](http://watirwebdriver.com/headless/)。我没有使用它,所以不知道它的局限性。 – 2014-09-03 21:34:35