【发布时间】:2018-08-20 13:30:53
【问题描述】:
我有一个包含社交媒体图标按钮的小部件,下图是:
和html代码
<div class="collapse navbar-collapse social-icon" id="socialwidget-nav">
<ul id="HeaderSocialIcons" class="nav-pills">
<li class="facebook-icon">
<a id='ImageUrlNavigate' class='socialWidgetIcon' href='https://www.facebook.com/324421790958939' target = '_blank' style='margin:0px;'></a>
</li>
<li class="twitter-icon">
<a id='ImageUrlNavigate' class='socialWidgetIcon' href='https://www.twitter.com' target = '_blank' style='margin:0px;'></a>
</li>
<li class="linkedin-icon">
<a id='ImageUrlNavigate' class='socialWidgetIcon' href='https://www.linkedin.com' target = '_blank' style='margin:0px;'></a>
</li>
<li class="google-icon">
<a id='ImageUrlNavigate' class='socialWidgetIcon' href='https://www.google.com1' target = '_blank' style='margin:0px;'></a>
</li>
<li class="youtube-icon">
<a id='ImageUrlNavigate' class='socialWidgetIcon' href='https://www.youtube.com' target = '_blank' style='margin:0px;'></a>
</li>
<li class="instagram-icon">
<a id='ImageUrlNavigate' class='socialWidgetIcon' href='https://www.Instagram.com' target = '_blank' style='margin:0px;'></a>
</li>
<li class="pinterest-icon">
<a id='ImageUrlNavigate' class='socialWidgetIcon' href='https://www.pintrest.com' target = '_blank' style='margin:0px;'></a>
</li>
<li class="blog-icon">
<a id='ImageUrlNavigate' class='socialWidgetIcon' href='/MyBlog.aspx' target = '_blank' style='margin:0px;'></a>
</li>
</ul>
我想使用此脚本打开所有社交媒体链接
package TestScripts;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
public class TestSemiCustom {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "C:/geckodriver/geckodriver-v0.21.0-win64/geckodriver.exe");
//System.setProperty("webdriver.chrome.driver", "C:\\Users\\Hassan\\Documents\\eclipseworkspace\\WebDriverProject\\lib\\chromedriver.exe");
WebDriver driver = new FirefoxDriver();
//driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
driver.get("http://www.example.com/");
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
String oldTab = driver.getWindowHandle();
Actions action= new Actions(driver);
List<WebElement> socialMediaIcons = driver.findElements(By.xpath("//*[@id='ImageUrlNavigate']"));
System.out.println("Size of list = " + socialMediaIcons.size());
for (WebElement AllSocial : socialMediaIcons)
{
String Name = AllSocial.getAttribute("href");
System.out.println(Name);
AllSocial.click();
}
driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
action.keyDown(Keys.CONTROL).keyDown(Keys.SHIFT).sendKeys(Keys.TAB).build().perform();
}
}
最后用户将导航到父标签
但我收到以下错误:
JavaScript 警告:https://static.xx.fbcdn.net/rsrc.php/v3ik7f4/yY/l/en_GB/zomArbZJYcR.js,第 1094 行:return 语句后无法访问代码
请注意,此社交媒体在页眉和页脚上使用相同的 html 代码
我需要做什么?
【问题讨论】:
-
这是一个 Javascript 警告。如果您的代码不起作用,我猜它是别的东西。它在什么方面不起作用?
-
我认为问题在于,这个小部件多次在页面上,在页眉和页脚上使用相同的 html 代码,这意味着它让我获得相同的 xpth 并且当我申请循环给予我的 webelement 列表的大小为 16,标题社交媒体链接为 8,页脚社交媒体链接为 8,这就是它进入无限循环的原因
-
你能在第 1094 行显示文件 zomArbZJYcR.js 吗?错误消息意味着在 return 语句之后有命令。 return 语句,意味着方法的结束,因此它之后的任何命令都无法执行。
-
什么进入了无限循环?哪个代码?
标签: java selenium firefox selenium-webdriver