场景:有一个包含10个web链接的网页。单击每个web链接并使用selenium Java在新窗口或选项卡中打开
这是我面试时问的问题。 需要帮助来解决这个问题吗 场景:有一个包含10个web链接的网页。单击每个web链接并使用selenium Java在新窗口或选项卡中打开。 例如场景:有一个包含10个web链接的网页。单击每个web链接并使用selenium Java在新窗口或选项卡中打开,java,selenium,Java,Selenium,这是我面试时问的问题。 需要帮助来解决这个问题吗 场景:有一个包含10个web链接的网页。单击每个web链接并使用selenium Java在新窗口或选项卡中打开。 例如 单击WebDriver教程中的所有教程。它应该在新选项卡中打开您可以使用JavascriptExecutor 首先,捕获列表中所有必需的链接元素 迭代所有列表元素并从锚标记获取href值 通过传递上述href值,使用JavaScript执行器打开窗口 代码: public static void main(String
单击WebDriver教程中的所有教程。它应该在新选项卡中打开您可以使用
JavascriptExecutor
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver", "drivers/chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("https://www.guru99.com/selenium-tutorial.html");
driver.manage().window().maximize();
WebDriverWait wait=new WebDriverWait(driver,20);
wait.until(ExpectedConditions.titleContains("Selenium Tutorial"));
List<WebElement> tutorialLinkList=driver.findElements(By.xpath("//strong[contains(text(),'Tutorial')]/ancestor::a"));
JavascriptExecutor js=(JavascriptExecutor)driver;
//I have just clicked only 10 link. If you want to iterate all the available links, then use foreach loop
for(int i=0;i<10;i++){
String url=tutorialLinkList.get(i).getAttribute("href");
js.executeScript("window.open(arguments[0])",url); //New Tab will be opened
}
}
编辑:使用操作类编写代码
看起来右键单击在该URL中不起作用,因此,您可以通过执行以下Ctr+单击操作打开“链接是新的”选项卡
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver", "drivers/chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("https://www.guru99.com/selenium-tutorial.html");
driver.manage().window().maximize();
WebDriverWait wait=new WebDriverWait(driver,20);
wait.until(ExpectedConditions.titleContains("Selenium Tutorial"));
List<WebElement> tutorialLinkList=driver.findElements(By.xpath("//strong[contains(text(),'Tutorial')]/ancestor::a"));
Actions action = new Actions(driver);
//I have just clicked only 10 link. If you want to iterate all the available links, then use foreach loop
for(int i=0;i<10;i++){
action.keyDown(Keys.CONTROL).click(tutorialLinkList.get(i)).keyUp(Keys.CONTROL).build().perform();
}
}
publicstaticvoidmain(字符串参数[]){
System.setProperty(“webdriver.chrome.driver”、“drivers/chromedriver.exe”);
WebDriver驱动程序=新的ChromeDriver();
驱动程序。获取(“https://www.guru99.com/selenium-tutorial.html");
driver.manage().window().maximize();
WebDriverWait wait=新的WebDriverWait(驱动程序,20);
等到(预期条件.标题含量(“硒教程”);
List tutorialLinkList=driver.findelelements(By.xpath(“//strong[contains(text(),'Tutorial')]/concenter::a”);
动作动作=新动作(驱动);
//我只点击了10个链接。如果你想迭代所有可用的链接,那么使用foreach循环
对于(int i=0;i,根据您在评论部分的回答,您可以通过操作类实现相同的行为,该类可在selenium中获得
您可以尝试以下代码:
public class Amisha {
static WebDriver driver ;
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\user***\\Downloads\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.guru99.com/selenium-tutorial.html");
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,650)", "");
List<WebElement> element = driver.findElements(By.xpath("//strong[text()='WebDriver Tutorial']/following-sibling::table[1]/descendant::a"));
Actions action = new Actions(driver);
for(WebElement ele:element) {
action.keyDown(Keys.LEFT_CONTROL).moveToElement(ele).click().keyUp(Keys.LEFT_CONTROL).build().perform();
}
}
}
公共类Amisha{
静态网络驱动程序;
公共静态void main(字符串[]args)引发InterruptedException{
System.setProperty(“webdriver.chrome.driver”,“C:\\Users\\user***\\Downloads\\chromedriver\u win32\\chromedriver.exe”);
驱动程序=新的ChromeDriver();
driver.manage().window().maximize();
驱动程序。获取(“https://www.guru99.com/selenium-tutorial.html");
JavascriptExecutor jse=(JavascriptExecutor)驱动程序;
jse.executeScript(“window.scrollBy(0650)”,“”);
List元素=driver.findElements(By.xpath(//strong[text()='WebDriver Tutorial']/以下同级::表[1]/后代::a”);
动作动作=新动作(驱动);
for(WebElement ele:element){
action.keyDown(Keys.LEFT_控件)。moveToElement(ele)。click().keydup(Keys.LEFT_控件)。build().perform();
}
}
}
@cruisepandey:不。tutoriallinglist将保存所有必需的链接元素。因此,我们可以迭代所有列表并提取href值。我已经用上述代码进行了测试,所有链接都将以新的格式打开tab@cruisepandey谢谢你的帮助,但是我可以不用js.executeScript吗。@阿米沙达马尼:是的,我们可以使用actions cl来实现请检查更新的答案
public class Amisha {
static WebDriver driver ;
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\user***\\Downloads\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.guru99.com/selenium-tutorial.html");
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,650)", "");
List<WebElement> element = driver.findElements(By.xpath("//strong[text()='WebDriver Tutorial']/following-sibling::table[1]/descendant::a"));
Actions action = new Actions(driver);
for(WebElement ele:element) {
action.keyDown(Keys.LEFT_CONTROL).moveToElement(ele).click().keyUp(Keys.LEFT_CONTROL).build().perform();
}
}
}