我正在尝试使用Webdriver点击Facebook Like按钮。你可以在这个页面看到一个Like按钮的例子。
切换到iframe后,我试过:
page.execute_script("document.querySelector('.pluginConnectButton > div:first-child button').click()")
这个脚本可以在Firebug和Chrome Developer Tools中工作,在切换到iframe后。
但它不工作在FirefoxDriver和ChromeDriver(脚本通过,但按钮没有改变为点击一个)
如何使用Webdriver点击此按钮?
虽然这对我来说很有效,但它似乎很脆弱。我不得不使用一些javascript来获取iframe的id,因为FB在每个页面加载时都会更改id。幸运的是,他们没有改变iframe的类。
id = page.evaluate_script("$('.fb_ltr').attr('id');")
within_frame(id) do
page.first(:css, '.pluginButton').click
end
这个对你有用
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");
}
我使用的是page-object 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