2013-01-16 11 views
5

Próbuję kliknąć przycisk Facebook Like przy użyciu oprogramowania Webdriver. Możesz zobaczyć przykład Like button at this page.Jak kliknąć Facebook Jak przycisk używając Webdriver

Po włączeniu do iframe Próbowałem:

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

Skrypt działa w Firebug i Chrome Developer Tools po włączeniu do iframe.

Ale to nie działa w FirefoxDriver i ChromeDriver (skrypt przechodzi przycisku, ale nie zmienia się do jednego kliknięcia)

Jak mogę kliknąć ten przycisk, za pomocą Webdriver?

+0

można pokazać na przykładzie działa? –

+0

@MurtazaHussain Działa przycisk Like na [tej stronie] (http://developers.facebook.com/docs/reference/plugins/like/). Muszę kliknąć przycisk na innej stronie, ale przyciski są takie same. –

+0

Udało mi się uruchomić to w trybie watir-webdriver, ale musiałem wywołać zdarzenie mouseover dla przycisku przed jego kliknięciem. Niestety nie mogłem wymyślić, jak to powtórzyć w Capybara lub Selenium-Webdriver. Facebook może również sprawdzać użycie webdrivera, jak widać w elemencie iframe, który zobaczy, że jakiś atrybut webdriperatora jest równy true. –

Odpowiedz

4

Podczas gdy to zadziałało, wydaje mi się, że jest kruchy. Musiałem użyć niektórych javascript, aby uzyskać identyfikator elementu iframe, ponieważ FB zmienia identyfikator przy każdym ładowaniu strony. Na szczęście nie zmieniają one klasy elementu iframe.

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

To do pracy dla ciebie.

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

Używam strona-obiektu klejnot. tutaj jest mój sposób, aby kliknąć przycisk fb jak:

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