我必须测试这个FB按钮:
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>
答案 0 :(得分:0)
也许你的xpath没有找到IframeFacebook,但是找到了按钮。第一次单击是设置焦点。
尝试添加其他点击以查看是否是这种情况。如果尝试使用标签名称或ID定位器作为Iframe。
如果您希望自己的生活更轻松,请尝试:
https://addons.mozilla.org/en-Us/firefox/addon/element-locator-for-webdriv/
另外,不要讲课,但最好使用Xpath定位器作为最后的手段。
答案 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 强>
如果我们点击共享链接一旦它没有打开下面的选项(不明白为什么?!)。尝试点击两次。