2013-01-16 25 views
5

我正在尝试使用Webdriver点击Facebook Like按钮。你可以看到一个例子像按钮at this page如何点击使用Webdriver的Facebook Like按钮

切换后的iframe我已经试过:

page.execute_script("document.querySelector('.pluginConnectButton > div:first-child button').click()") 

这个脚本切换到IFRAME后的作品在Firebug和Chrome开发者工具。

不过,这并不在FirefoxDriver和ChromeDriver工作(脚本传递,但按钮不会更改为点击一个)

我如何可以点击使用webdriver的这个按钮?

+0

您可以显示工作的例子吗? –

+0

@MurtazaHussain在[本页](http://developers.facebook.com/docs/reference/plugins/like/)上可以找到Like按钮。我需要在另一个页面点击按钮,但按钮是一样的。 –

+0

我能够得到这个在watir-webdriver中工作,但我必须在点击按钮之前触发按钮的mouseover事件。不幸的是,我无法弄清楚如何在Capybara或Selenium-Webdriver中复制相同的内容。 Facebook可能也会检查webdriver的使用,就像您在iframe中看到的那样,它会看到一些webddriver属性等于true。 –

回答

4

虽然这对我来说似乎很脆弱。我不得不使用一些JavaScript来获取iframe的id,因为FB会在每次页面加载时更改id。幸运的是,他们并没有改变iframe的类。

id = page.evaluate_script("$('.fb_ltr').attr('id');") 
within_frame(id) do 
    page.first(:css, '.pluginButton').click 
end 
0

这个为你工作。

if(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*Like[\\s\\S]*$")== true) { 
driver.findElement(By.xpath("//form[@id='u_0_1']/div/div/div/button")).click(); 
} 
else{ 
System.out.println("Unable to click Like button on page"); 
} 
0

我正在使用页面对象gem。这里是我的方法,点击喜欢FB按钮:

in_frame(:class =>"fb_ltr") do |frame| 
    button(:fb_btn, :css => "#facebook div.pluginButton.pluginButtonSmall.pluginButtonInline.pluginConnectButtonDisconnected button" , :frame => frame) 
    end 

...

fb_btn_element.when_present.click