Java 返回语句后无法访问的代码,同时从小部件打开社交媒体链接
我有一个包含社交媒体图标按钮的小部件,下图: 和html代码Java 返回语句后无法访问的代码,同时从小部件打开社交媒体链接,java,selenium,firefox,selenium-webdriver,Java,Selenium,Firefox,Selenium Webdriver,我有一个包含社交媒体图标按钮的小部件,下图: 和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='soci
<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();
}
}
打包测试脚本;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.By;
导入org.openqa.selenium.Keys;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.firefox.FirefoxDriver;
导入org.openqa.selenium.interactions.Actions;
公共类TestSemiCustom{
公共静态void main(字符串[]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=newfirefoxdriver();
//driver.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
驱动程序。获取(“http://www.example.com/");
driver.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
字符串oldTab=driver.getWindowHandle();
动作动作=新动作(驱动);
List socialmediacons=driver.findElements(By.xpath(“/*[@id='ImageUrlNavigate']);
System.out.println(“列表大小=“+socialMediaIcons.Size());
for(WebElement AllSocial:SocialMedia)
{
String Name=AllSocial.getAttribute(“href”);
System.out.println(名称);
AllSocial.click();
}
driver.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS);
action.keyDown(Keys.CONTROL).keyDown(Keys.SHIFT).sendKeys(Keys.TAB).build().perform();
}
}
最后一个用户将导航到父选项卡
但我收到以下错误:
JavaScript警告:,第1094行:返回语句后的代码不可访问
请注意,此社交媒体在页眉和页脚上使用相同的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>
我需要做什么?您可以使用LeftCtrl+LeftClick打开所有文件 我在C#中添加了一个示例来演示它
Actions actions = new Actions(browser);
actions.KeyDown(Keys.LeftControl);
for (IWebElement socialIcon in allSocialIcons)
{
actions.Click(socialIcon);
}
actions.KeyUp(Keys.LeftControl)
.Build()
.Perform();
它将所有社会主义者添加到操作列表中,然后才执行它。这是一个Javascript警告。如果你的代码不起作用,我猜是其他原因。它以什么方式不起作用?我想问题是,这个小部件多次在页面上使用相同的html代码放置在页眉和页脚上,这意味着它可以让我获得相同的xpth,当我申请循环时,会给我Web元素列表的大小16,页眉社交媒体链接8,页脚社交媒体链接8,这就是它将无限循环的原因。您能在1094行周围显示zomArbZJYcR.js文件吗?错误消息表示返回语句后有命令。return语句意味着metho的结束,因此它后面的任何命令都永远不能执行。什么是进入无限循环的原因?哪种代码?