点击Facebook'分享'按钮与selenium java

时间:2015-09-25 14:42:57

标签: java facebook selenium-webdriver webdriver automated-tests

我必须测试这个FB按钮:

enter image description here

Facebook按钮位于iframe内。我切换到iframe,我能够找到'分享'按钮。但是当webDriver点击它时,弹出窗口不会显示出来。我的代码是:

WebElement iframeFacebook = webDriver.findElement(By.xpath("/html/body/div[3]/div/div[2]/div[3]/iframe[1]"));
webDriver.switchTo().frame(iframeFacebook);
webDriver.findElement(By.xpath("//span[contains(@class, 'pluginButtonLabel') and contains(., 'Share')]")).click();
webDriver.switchTo().defaultContent();

我为Twitter按钮做同样的事情,它有效。 FB按钮有什么特别之处?

修改

FB按钮的HTML代码:

<iframe frameborder="0" allowtransparency="true" style="border:none; overflow:hidden; width:97px; height:35px; float:left" scrolling="no" src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Ffacebook.com%2Fmynumber26&width&layout=button&action=like&show_faces=false&share=true&height=35&appId=1454011268146569&locale=en_US">
    <!DOCTYPE html>
    <html id="facebook" class="" lang="en">
    <body class="plugin gecko win x1 Locale_en_US" dir="ltr">
        <div class="_li">
            <div class="pluginSkinLight pluginFontHelvetica">
                <div>
                    <table class="uiGrid _51mz pluginConnectButtonLayoutRoot _3c9t" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr class="_51mx">
                                <td class="_51m- hCent">
                                    <td class="_51m- pluginButtonSpacer">
                                        <div class="pluginButton pluginButtonSmall" onclick="require(" Popup ").open("\/sharer.php?u=http\u00253A\u00252F\u00252Ffacebook.com\u00252Fmynumber26&display=popup&ref=plugin&src=share_button&app_id=1454011268146569 ", 670, 340);">
                                            <div>
                                                <div class="pluginButtonContainer">
                                                    <div class="pluginButtonImage">
                                                        <span class="pluginButtonLabel">Share</span>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </td>
                                    <td class="_51m-"></td>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </body>
    </html>
</iframe>

2 个答案:

答案 0 :(得分:0)

也许你的xpath没有找到IframeFacebook,但是找到了按钮。第一次单击是设置焦点。

尝试添加其他点击以查看是否是这种情况。如果尝试使用标签名称或ID定位器作为Iframe。

如果您希望自己的生活更轻松,请尝试:

https://addons.mozilla.org/en-Us/firefox/addon/element-locator-for-webdriv/

另外,不要讲课,但最好使用Xpath定位器作为最后的手段。

  1. ID
  2. 标记名称
  3. 文本
  4. HREF

答案 1 :(得分:0)

我已经验证过了。它不在iframe中。

使用以下逻辑

String postNo="1";  // To click on share of first post in timeline
driver.findElement(By.xpath("//div[contains(@id,'substream')]["+postNo+"]//span[@class='share_root']//span[text()='Share']")).click();
driver.findElement(By.xpath("//div[contains(@id,'substream')]["+postNo+"]//span[@class='share_root']//span[text()='Share']")).click();

//click on =>(Share Now friends) with below locator
By.xpath("//ul[@role='menu']//span[text()='Share Now (Friends)']")

//click on =>Share... 
By.xpath("//ul[@role='menu']//span[text()='Share…']")

修改-I

如果我们点击共享链接一旦它没有打开下面的选项(不明白为什么?!)。尝试点击两次。