সেলেনিয়াম ওয়েবড্রাইভার (ওরফে সেলেনিয়াম 2) ব্যবহার করে বিদ্যমান ফায়ারফক্স ব্রাউজারে কীভাবে একটি নতুন ট্যাব খুলবেন?
সেলেনিয়াম ওয়েবড্রাইভার (ওরফে সেলেনিয়াম 2) ব্যবহার করে বিদ্যমান ফায়ারফক্স ব্রাউজারে কীভাবে একটি নতুন ট্যাব খুলবেন?
উত্তর:
নীচের কোডটি নতুন ট্যাবে লিঙ্কটি খুলবে।
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN);
driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);
নীচের কোডটি খালি নতুন ট্যাবটি খুলবে।
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,"t");
driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);
window.open()
এটি অনেক প্ল্যাটফর্ম / ব্রাউজারে কাজ করার আশা করতে পারেন।
রুবি / পাইথন / সি # বাইন্ডিংগুলিতে উত্তর সন্ধানকারী অন্য কারও জন্য (সেলেনিয়াম ২.৩৩.০)।
নোট করুন যে প্রেরণ করতে আসল কীগুলি আপনার ওএসের উপর নির্ভর করে, উদাহরণস্বরূপ, ম্যাক COMMAND + t
পরিবর্তে ব্যবহার করে CONTROL + t
।
চুনি
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.get('http://stackoverflow.com/')
body = driver.find_element(:tag_name => 'body')
body.send_keys(:control, 't')
driver.quit
পাইথন
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/")
body = driver.find_element_by_tag_name("body")
body.send_keys(Keys.CONTROL + 't')
driver.close()
সি শার্প
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace StackOverflowTests {
class OpenNewTab {
static void Main(string[] args) {
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://stackoverflow.com/");
IWebElement body = driver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Control + 't');
driver.Quit();
}
}
}
driver.switchTo().window(windowName);
কোনও ট্যাব বা উইন্ডো অ্যাক্সেস করতে হবে। স্পষ্টতই, তাদের মধ্যে স্যুইচিংয়ের জন্য আপনাকে উইন্ডোটির নাম (গুলি) স্বাভাবিক হিসাবে রাখা দরকার।
কেন এই না
driver.ExecuteScript("window.open('your url','_blank');");
driver.ExecuteScript("window.open('about:blank','_blank');");
জাভাস্ক্রিপ্টএক্সেক্টর ব্যবহার করে নতুন ট্যাব খুলতে,
((JavascriptExecutor) driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
সূচক অনুসারে ট্যাবে নিয়ন্ত্রণ করবে:
driver.switchTo().window(tabs.get(1));
প্রধান ট্যাবে ড্রাইভার নিয়ন্ত্রণ:
driver.switchTo().window(tabs.get(0));
driver.switchTo().window(tabs.get(1)); driver.get("https://www.stackoverflow.com"); Thread.sleep(2000); driver.switchTo().window(tabs.get(2)); driver.get("https://www.flipkart.com"); Thread.sleep(2000); driver.close(); driver.switchTo().window(tabs.get(1)); Thread.sleep(2000); driver.close(); driver.switchTo().window(tabs.get(0));
, আমি এটি চেষ্টা করেছি কিন্তু আবদ্ধ ব্যতিক্রমের বাইরে অ্যারে পেয়েছি, আপনি যদি কোনও সমাধান জানেন তবে দয়া করে আমাকে জানান।
driver.switchTo().window(tabs.get(2));
, এটি ঠিকঠাক কাজ করে ((JavascriptExecutor) driver).executeScript("window.open('https://www.stackoverflow.com','_blank');"); Thread.sleep(3000); ((JavascriptExecutor) driver).executeScript("window.open('https://www.flipkart.com','_blank');");
তবে উইন্ডোতে স্যুইচ করার আমার কোনও নিয়ন্ত্রণ থাকবে না।
Chrome ড্রাইভারে নতুন উইন্ডো খুলতে open
//The script that will will open a new blank window
//If you want to open a link new tab, replace 'about:blank' with a link
String a = "window.open('about:blank','_blank');";
((JavascriptExecutor)driver).executeScript(a);
আপনি সেলেনিয়াম ওয়েবড্রাইভার দিয়ে জাভা ব্যবহার করে নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
জাভাস্ক্রিপ্ট ব্যবহার করে:
WebDriver driver = new FirefoxDriver();//FF or any other Driver
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.open()");
নতুন ট্যাবটি খোলার পরে সেই ট্যাবে স্যুইচ করা দরকার:
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
ফায়ারফক্স ব্রাউজারের জন্য এটি ব্যবহার করে দেখুন।
/* Open new tab in browser */
public void openNewTab()
{
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(0));
}
ওয়েবড্রাইভারের এখন ট্যাব খোলার জন্য সমর্থন রয়েছে:
browser = Selenium::WebDriver.for :chrome
new_tab = browser.manage.new_window
একটি নতুন ট্যাব খুলবে। উইন্ডো খোলা আসলে অ-মানক ক্ষেত্রে পরিণত হয়েছে:
browser.manage.new_window(:window)
ট্যাব বা উইন্ডো স্বয়ংক্রিয়ভাবে ফোকাস করা হবে না। এটিতে স্যুইচ করতে:
browser.switch_to.window new_tab
সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে বিদ্যমান ক্রোম ব্রাউজারে একটি নতুন ট্যাব খুলতে আপনি এই কোডটি ব্যবহার করতে পারেন:
driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
string newTabInstance = driver.WindowHandles[driver.WindowHandles.Count-1].ToString();
driver.SwitchTo().Window(newTabInstance);
driver.Navigate().GoToUrl(url);
কিছুক্ষণের জন্য ক্রোমে নতুন ট্যাব খুলতে আমার সমস্যা হয়েছিল। এমনকি driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
আমার পক্ষে কাজ করেনি।
আমি জানতে পেরেছিলাম যে সেলেনিয়ামটি ড্রাইভারের দিকে মনোনিবেশ করা যথেষ্ট নয়, উইন্ডোজের সামনেও উইন্ডো থাকতে হবে।
আমার সমাধানটি ছিল ক্রোমে একটি সতর্কতা প্রার্থনা যা উইন্ডোটি সামনে এনে এবং তারপরে কমান্ডটি কার্যকর করে ute কোডের উদাহরণ:
((JavascriptExecutor)driver).executeScript("alert('Test')");
driver.switchTo().alert().accept();
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
আমি জাভা এবং ফায়ারফক্স ৪৪.০.২ এ সেলেনিয়াম 2.52.0 ব্যবহার করছি। দুর্ভাগ্যক্রমে উপরের কোনও সমাধান আমার পক্ষে কাজ করেনি। সমস্যাটি হ'ল আমি যদি ড্রাইভারকে কল করি getgetWindowHandles () আমি সর্বদা 1 টি একক হ্যান্ডেল পাই। ফায়ারফক্স একটি একক প্রক্রিয়া এবং প্রতিটি ট্যাব পৃথক প্রক্রিয়া নয় বলে এটি কোনওভাবে আমার কাছে বোধগম্য। তবে আমি ভুল হতে পারে। যাইহোক আমি নিজের সমাধানটি লেখার চেষ্টা করি:
// open a new tab
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
//url to open in a new tab
String urlToOpen = "https://url_to_open_in_a_new_tab";
Iterator<String> windowIterator = driver.getWindowHandles()
.iterator();
//I always get handlesSize == 1, regardless how many tabs I have
int handlesSize = driver.getWindowHandles().size();
//I had to grab the original handle
String originalHandle = driver.getWindowHandle();
driver.navigate().to(urlToOpen);
Actions action = new Actions(driver);
// close the newly opened tab
action.keyDown(Keys.CONTROL).sendKeys("w").perform();
// switch back to original
action.keyDown(Keys.CONTROL).sendKeys("1").perform();
//and switch back to the original handle. I am not sure why, but
//it just did not work without this, like it has lost the focus
driver.switchTo().window(originalHandle);
আমি একটি নতুন ট্যাব খুলতে Ctrl + t সংমিশ্রণটি ব্যবহার করেছি, এটি বন্ধ করতে Ctrl + w এবং মূল ট্যাবে ফিরে যেতে আমি Ctrl + 1 (প্রথম ট্যাব) ব্যবহার করেছি। আমি জানি যে আমার সমাধানটি নিখুঁত বা এমনকি ভাল নয় এবং আমি ড্রাইভারের সুইচটো কলটিও স্যুইচ করতে চাই, তবে আমি যেমন লিখেছি তা সম্ভব হয়নি কারণ আমার কেবল একটি হ্যান্ডেল ছিল। সম্ভবত এটি একই পরিস্থিতিতে কারও পক্ষে সহায়ক হবে।
ক্রোমের জাভা সহ সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে কীভাবে একটি নতুন ট্যাব খুলবেন?
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.navigate().to("https://google.com");
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_T);
উপরের কোডটি প্রথম এক্সটেনশানগুলি অক্ষম করবে এবং রোবট শ্রেণীর ব্যবহার করে নতুন ট্যাব খুলবে।
কোডের এই লাইনটি সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে একটি নতুন ব্রাউজার ট্যাব খুলবে
((JavascriptExecutor)getDriver()).executeScript("window.open()");
* Java
আমি ব্যবহার করার পরামর্শ দিচ্ছি JavascriptExecutor
:
((JavascriptExecutor) driver).executeScript("window.open()");
((JavascriptExecutor) driver).executeScript("window.open('https://google.com')");
নিম্নলিখিত আমদানি:
import org.openqa.selenium.JavascriptExecutor;
কীভাবে একটি নতুন খুলতে হয় তবে আরও গুরুত্বপূর্ণ, আপনি কীভাবে সেই নতুন ট্যাবে স্টাফ করবেন? ওয়েবড্রাইভার প্রতিটি ট্যাবের জন্য একটি নতুন উইন্ডোহ্যান্ডল যুক্ত করে না এবং কেবল প্রথম ট্যাবের নিয়ন্ত্রণ রয়েছে। সুতরাং, একটি নতুন ট্যাব নির্বাচন করার পরে (কন্ট্রোল + ট্যাব নম্বর) সেট করুন visible
ভিজ্যুয়াল বেসিক
Dim driver = New WebDriver("Firefox", BaseUrl)
' Open new tab - send Control T
Dim body As IWebElement = driver.FindElement(By.TagName("body"))
body.SendKeys(Keys.Control + "t")
' Go to a URL in that tab
driver.GoToUrl("YourURL")
' Assuming you have m tabs open, go to tab n by sending Control + n
body.SendKeys(Keys.Control + n.ToString())
' Now set the visible tab as the drivers default content.
driver.SwitchTo().DefaultContent()
Actions at=new Actions(wd);
at.moveToElement(we);
at.contextClick(we).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
একাধিক ট্যাবগুলি কীভাবে খুলবেন এবং ট্যাবগুলির মধ্যে স্যুইচ করবেন এবং শেষে সমস্ত ট্যাবগুলি বন্ধ করুন তা বুঝতে এই সম্পূর্ণ উদাহরণটি পরীক্ষা করুন
public class Tabs {
WebDriver driver;
Robot rb;
@BeforeTest
public void setup() throws Exception {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\Anuja.AnujaPC\\Downloads\\chromedriver_win32\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("http://qaautomated.com");
}
@Test
public void openTab() {
//Open tab 2 using CTRL + t keys.
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
//Open URL In 2nd tab.
driver.get("http://www.qaautomated.com/p/contact.html");
//Call switchToTab() method to switch to 1st tab
switchToTab();
//Call switchToTab() method to switch to 2nd tab.
switchToTab();
}
public void switchToTab() {
//Switching between tabs using CTRL + tab keys.
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");
//Switch to current selected tab's content.
driver.switchTo().defaultContent();
}
@AfterTest
public void closeTabs() throws AWTException {
//Used Robot class to perform ALT + SPACE + 'c' keypress event.
rb =new Robot();
rb.keyPress(KeyEvent.VK_ALT);
rb.keyPress(KeyEvent.VK_SPACE);
rb.keyPress(KeyEvent.VK_C);
} }
এই উদাহরণটি এই ওয়েব পৃষ্ঠা দ্বারা দেওয়া হয়েছে
Https://bugs.chromium.org/p/chromedriver/issues/detail?id=1465 এ বাগের কারণে যদিও ওয়েবড্রাইভার.সুইচটো আসলে ট্যাবগুলি স্যুইচ করে, প্রথম ট্যাবে ফোকাসটি রেখে দেওয়া হয়। আপনি সুইচ উইন্ডোর পরে ড্রাইভার.টিগেট করে এটি নিশ্চিত করতে পারেন এবং দেখুন যে দ্বিতীয় ট্যাবটি মূল URL এ চলেছে, মূল ট্যাবে নয়।
@ ইয়ার্ডেনিং 2 প্রস্তাবিত এখন অবধি কাজ করে Work সতর্কতা খোলার জন্য js ব্যবহার করুন এবং তারপরে এটি গ্রহণ করতে ওয়েবড্রাইভার ব্যবহার করুন।
এই কোডটি আমার জন্য কাজ করছে (সেলেনিয়াম 3.8.1, ক্রোমড্রাইভার = 2.34.522940, ক্রোম = 63.0):
public void openNewTabInChrome() {
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.linkText("Gmail"));
Actions actionOpenLinkInNewTab = new Actions(driver);
actionOpenLinkInNewTab.moveToElement(element)
.keyDown(Keys.CONTROL) // MacOS: Keys.COMMAND
.keyDown(Keys.SHIFT).click(element)
.keyUp(Keys.CONTROL).keyUp(Keys.SHIFT).perform();
ArrayList<String> tabs = new ArrayList(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.get("http://www.yahoo.com");
//driver.close();
}
প্রশ্ন : জাভা দিয়ে সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে একটি নতুন ট্যাব কীভাবে খুলবেন?
উত্তর : যে কোনও লিঙ্কে ক্লিক করার পরে নতুন ট্যাব খুলুন।
আমরা যদি নতুন খোলা ট্যাব পরিচালনা করতে চাই তবে আমাদের .switchTo ()। উইন্ডো () কমান্ডটি ব্যবহার করে ট্যাব পরিচালনা করতে হবে।
নির্দিষ্ট ট্যাবে স্যুইচ করুন তারপরে অপারেশন সম্পাদন করুন এবং প্যারেন্ট ট্যাবে ফিরে যেতে হবে।
package test;
import java.util.ArrayList;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Tab_Handle {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "geckodriver_path");
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
// Store all currently open tabs in Available_tabs
ArrayList<String> Available_tabs = new ArrayList<String>(driver.getWindowHandles());
// Click on link to open in new tab
driver.findElement(By.id("Url_Link")).click();
// Switch newly open Tab
driver.switchTo().window(Available_tabs.get(1));
// Perform some operation on Newly open tab
// Close newly open tab after performing some operations.
driver.close();
// Switch to old(Parent) tab.
driver.switchTo().window(Available_tabs.get(0));
}
}
আপনি যদি নতুন ট্যাব খুলতে চান তবে আপনি এটি ব্যবহার করতে পারেন
((JavascriptExecutor) getDriver()).executeScript("window.open()");
আপনি যদি নতুন ট্যাব থেকে লিঙ্কটি খুলতে চান তবে আপনি এটি ব্যবহার করতে পারেন
জাভাস্ক্রিপ্টএক্সেক্টর সহ:
public void openFromNewTab(WebElement element){
((JavascriptExecutor)getDriver()).executeScript("window.open('"+element.getAttribute("href")+"','_blank');");
}
ক্রিয়া সহ:
WebElement element = driver.findElement(By.xpath("your_xpath"));
Actions actions = new Actions(driver);
actions.keyDown(Keys.LEFT_CONTROL)
.click(element)
.keyUp(Keys.LEFT_CONTROL)
.build()
.perform();
সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে ব্রাউজার উইন্ডো পরিচালনা করছেন:
String winHandleBefore = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()) // Switch to new opened window
{
driver.switchTo().window(winHandle);
}
driver.switchTo().window(winHandleBefore); // move to previously opened window