সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে কীভাবে একটি নতুন ট্যাব খুলবেন?


114

সেলেনিয়াম ওয়েবড্রাইভার (ওরফে সেলেনিয়াম 2) ব্যবহার করে বিদ্যমান ফায়ারফক্স ব্রাউজারে কীভাবে একটি নতুন ট্যাব খুলবেন?


আপনি কোন প্রোগ্রামিং ভাষা ব্যবহার করছেন?
অ্যালেক্সেক্স

2
আমি জাভা ব্যবহার করি। আমি একটি সমাধান পেয়েছি "m_Driver.findElement (বাই.সিএসএসইলেক্টর (" বডি "))। সেন্ডকি (কী। এবং এর কাজ সম্পূর্ণ জরিমানা।
ভক্তি শাহ

আপনি কি তাহলে নতুন ট্যাবটি নিয়ন্ত্রণ করতে পারবেন? নতুন ট্যাবগুলির জন্য সেলেনিয়ামের কোনও সমর্থন নেই (পরিবর্তে এটি নতুন উইন্ডো খোলার চেষ্টা করে)। আমার উত্তরগুলি stackoverflow.com/questions/14550360/… এবং স্ট্যাকওভারফ্লো / প্রশ্ন / 17225911/… দেখুন । ঠিক কি আপনি অর্জন করার চেষ্টা করছেন?
পেট্রা জেনেসেক

আমি কিছু পাঠ্য অনুলিপি করতে চেয়েছিলাম এবং তারপরে একটি নতুন ট্যাব খুলতে এবং একই টেক্সটটি নতুন ট্যাবে আটকে দিতে চাই। আমি নতুন ট্যাবটি নিয়ন্ত্রণ করার চেষ্টা করি নি তবে আমি যা অর্জন করতে চাই তাতে এটি কার্যকর কাজ করে।
ভক্তি শাহ

আমি সেই উপাদানটির গেটটেক্সট () ব্যবহার করে একই কাজটি করেছি এবং তারপরে ড্রাইভার.জেট (পাঠ্য) করেছি।
ভক্তি শাহ

উত্তর:


53

নীচের কোডটি নতুন ট্যাবে লিঙ্কটি খুলবে।

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);

7
আপনি ম্যাক
ন্যানোসপেক

2
এই সমাধানটি ওএস-নির্দিষ্ট (এবং সম্ভবত ব্রাউজার-নির্দিষ্ট) শর্টকাটের উপর নির্ভর করে বলে মনে হয় ... কমপক্ষে আপনি যদি জেএস-এর মতো কিছু ব্যবহার করেন তবে আপনি window.open()এটি অনেক প্ল্যাটফর্ম / ব্রাউজারে কাজ করার আশা করতে পারেন।
এমকাসবার্গ

86

রুবি / পাইথন / সি # বাইন্ডিংগুলিতে উত্তর সন্ধানকারী অন্য কারও জন্য (সেলেনিয়াম ২.৩৩.০)।

নোট করুন যে প্রেরণ করতে আসল কীগুলি আপনার ওএসের উপর নির্ভর করে, উদাহরণস্বরূপ, ম্যাক 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();
        }
    }
}

3
আপনি আগের ট্যাবে কীভাবে ফিরে যাবেন?
লুসার

11
ওয়েবড্রাইভার একাধিক ট্যাব পরিচালনা করতে পারে - এটি সহজ তাদের পৃথক উইন্ডো হিসাবে বিবেচনা করে। সুতরাং আপনাকে কেবল driver.switchTo().window(windowName);কোনও ট্যাব বা উইন্ডো অ্যাক্সেস করতে হবে। স্পষ্টতই, তাদের মধ্যে স্যুইচিংয়ের জন্য আপনাকে উইন্ডোটির নাম (গুলি) স্বাভাবিক হিসাবে রাখা দরকার।
মার্ক রাওল্যান্ডস

1
আপনি ব্যাখ্যা করতে পারেন আপনি কেন একটি উপাদান পুনরুদ্ধার করছেন এবং সেই উপাদানটিতে Ctrl-t প্রেরণ করছেন? এটির কোনও মানে নেই ... আপনি "ওয়েব উপাদানটিতে Ctrl + টি" পারবেন না? কেন কেবলমাত্র নতুন ক্রিয়া (ওয়েবড্রাইভার) চালাবেন না end দয়া করে কেউ ব্যাখ্যা করতে পারেন?
ব্রোনডাহাল

1
এটি আমার পক্ষে কাজ করে না। আমি সিআরটিএল + টি টিপে বিভিন্ন পদ্ধতিতে চেষ্টা করেছি, এর মধ্যে কোনওটিই নতুন ট্যাব খুলতে সফল হয় না।
থাইনে

4
@ ক্রোমড্রাইভার বাগটি সিটিআরএল + টিকে কাজ করা থেকে বিরত রাখে । আপনি কাজের ভিত্তিতে CTRL + LMB ব্যবহার করতে পারেন। নমুনা কোডের জন্য কোড. google.com/p/chromedriver/issues/detail?id=903#c2 দেখুন ।
গিলি

34

কেন এই না

driver.ExecuteScript("window.open('your url','_blank');");

বেশিরভাগ পপআপ ব্লকাররা এই প্রচেষ্টাটিকে ব্লক করবে
বার্ট ল্যাম্ব

1
আপনি যেখানে আপনার ব্রাউজার সেটিংসের নিয়ন্ত্রণে রয়েছেন তা পরীক্ষার জন্য সম্ভবত নিরাপদ
কর্নোকোড

1
সম্ভবত দুর্দান্ত কাজ করবে। ক্রোমড্রাইভার সমস্ত এক্সটেনশন (যেমন অ্যাডব্লক) অক্ষম করে বলে মনে হচ্ছে
জোশ ও'ব্রায়ান

4
ক্রোড 49.0.2623.75 মি আপডেট হওয়ার পরে প্রেরিত কী পদ্ধতিটি আমার পক্ষে আর কাজ করে না এবং এই পদ্ধতিটি সেই ক্রোম সংস্করণে কাজ করে।
স্টিভেন

6
আপনি যদি ট্যাবে একটি ফাঁকা পৃষ্ঠা খুলতে চান, আপনি করতে পারেনdriver.ExecuteScript("window.open('about:blank','_blank');");
স্টিভেন

12

জাভাস্ক্রিপ্টএক্সেক্টর ব্যবহার করে নতুন ট্যাব খুলতে,

((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));

কীভাবে 3 টি ইউআরএল চালু করা যায়? 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));, আমি এটি চেষ্টা করেছি কিন্তু আবদ্ধ ব্যতিক্রমের বাইরে অ্যারে পেয়েছি, আপনি যদি কোনও সমাধান জানেন তবে দয়া করে আমাকে জানান।
ক্রুজপান্ডে

এটি তৃতীয় ট্যাবের জন্যও একইভাবে কাজ করে। আমি জানতে পারি ঠিক কোথায় ব্যতিক্রম ছুঁড়েছে (ড্রাইভার বন্ধে)?
itaশিতা শাহ

না, এই লাইনে 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');");তবে উইন্ডোতে স্যুইচ করার আমার কোনও নিয়ন্ত্রণ থাকবে না।
ক্রুজপান্ডে


8

আপনি সেলেনিয়াম ওয়েবড্রাইভার দিয়ে জাভা ব্যবহার করে নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:

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));

একটি নতুন ট্যাব খোলার জন্য ম্যানুয়াল অপারেশন Ctrl + T এখানে প্রয়োগ করা হয়েছে
রিপন আল ওয়াসিম

@ চন্দ্র শেখর: আপনি কি দয়া করে উপরে আমার জেএস কোড চেষ্টা করতে পারেন?
রিপন আল ওয়াসিম

@ শিবম: আপনাকে অনেক ধন্যবাদ কোডটি যেমন কাজ করেছে তেমন শুনে ভাল লাগছে।
রিপন আল ওয়াসিম

5

ফায়ারফক্স ব্রাউজারের জন্য এটি ব্যবহার করে দেখুন।

/*  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));
}

3

কোডের নীচে লিঙ্কটি নতুন উইন্ডোতে খুলবে

String selectAll = Keys.chord(Keys.SHIFT,Keys.RETURN);
driver.findElement(By.linkText("linkname")).sendKeys(selectAll);

1
টাইপ অবজেক্ট 'কী'-এর কোনও'
গিরি

@Robino। আমি এটি কী কী শ্রেণীতে দেখছি (org.openqa.Selenium)
মিঃ বিবিট

3

এখানে প্রায় সব উত্তর পুরানো।

ওয়েবড্রাইভারের এখন ট্যাব খোলার জন্য সমর্থন রয়েছে:

browser = Selenium::WebDriver.for :chrome
new_tab = browser.manage.new_window

একটি নতুন ট্যাব খুলবে। উইন্ডো খোলা আসলে অ-মানক ক্ষেত্রে পরিণত হয়েছে:

browser.manage.new_window(:window)

ট্যাব বা উইন্ডো স্বয়ংক্রিয়ভাবে ফোকাস করা হবে না। এটিতে স্যুইচ করতে:

browser.switch_to.window new_tab

2

সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে বিদ্যমান ক্রোম ব্রাউজারে একটি নতুন ট্যাব খুলতে আপনি এই কোডটি ব্যবহার করতে পারেন:

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);

হ্যাঁ এটি বিদ্যমান ইউআরএলের একই ট্যাবে একটি নতুন ইউআরএল খোলার পক্ষে কাজ করে, লিংক পরীক্ষাগুলির জন্য এটি বেশ ভাল কারণ এটি প্রচুর সংস্থান ব্যবহার করে না।
জন পিটারস

2

কিছুক্ষণের জন্য ক্রোমে নতুন ট্যাব খুলতে আমার সমস্যা হয়েছিল। এমনকি 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");

1

আমি জাভা এবং ফায়ারফক্স ৪৪.০.২ এ সেলেনিয়াম 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 (প্রথম ট্যাব) ব্যবহার করেছি। আমি জানি যে আমার সমাধানটি নিখুঁত বা এমনকি ভাল নয় এবং আমি ড্রাইভারের সুইচটো কলটিও স্যুইচ করতে চাই, তবে আমি যেমন লিখেছি তা সম্ভব হয়নি কারণ আমার কেবল একটি হ্যান্ডেল ছিল। সম্ভবত এটি একই পরিস্থিতিতে কারও পক্ষে সহায়ক হবে।


1
//to open new tab in existing window
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");

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);

উপরের কোডটি প্রথম এক্সটেনশানগুলি অক্ষম করবে এবং রোবট শ্রেণীর ব্যবহার করে নতুন ট্যাব খুলবে।


1

কোডের এই লাইনটি সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে একটি নতুন ব্রাউজার ট্যাব খুলবে

((JavascriptExecutor)getDriver()).executeScript("window.open()");

আমি যখন কোডের উপরে চলেছি, ক্রোমে এটি একটি নতুন ট্যাব খুলেছে। তবে ফায়ারফক্সে একটি নতুন উইন্ডো খোলা আছে। উভয় ক্ষেত্রে উইন্ডো হ্যান্ডলারটি সদ্য খোলার জন্য পৃথক। সুতরাং আমি মনে করি একটি ট্যাব কম বেশি উইন্ডোর সমান। অবশ্যই, ছদ্মবেশী উইন্ডোটি অবশ্যই একটি উইন্ডোর নিয়মিত ট্যাব থেকে পৃথক।
মমথমাচারেলা

1

* Java

আমি ব্যবহার করার পরামর্শ দিচ্ছি JavascriptExecutor:

  • নতুন ফাঁকা উইন্ডো খুলুন:
((JavascriptExecutor) driver).executeScript("window.open()");
  • নির্দিষ্ট url সহ নতুন উইন্ডোটি খুলুন:
((JavascriptExecutor) driver).executeScript("window.open('https://google.com')");

নিম্নলিখিত আমদানি:

import org.openqa.selenium.JavascriptExecutor;

0

নোডেজের জন্য একই উদাহরণ:

var webdriver = require('selenium-webdriver');
...
driver = new webdriver.Builder().
                    withCapabilities(capabilities).
                    build();
...

driver.findElement(webdriver.By.tagName("body")).sendKeys(webdriver.Key.COMMAND + "t");

0

কীভাবে একটি নতুন খুলতে হয় তবে আরও গুরুত্বপূর্ণ, আপনি কীভাবে সেই নতুন ট্যাবে স্টাফ করবেন? ওয়েবড্রাইভার প্রতিটি ট্যাবের জন্য একটি নতুন উইন্ডোহ্যান্ডল যুক্ত করে না এবং কেবল প্রথম ট্যাবের নিয়ন্ত্রণ রয়েছে। সুতরাং, একটি নতুন ট্যাব নির্বাচন করার পরে (কন্ট্রোল + ট্যাব নম্বর) সেট করুন 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()

0

সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে বিদ্যমান ফায়ারফক্স ব্রাউজারে একটি নতুন ট্যাব খুলতে

FirefoxDriver driver = new FirefoxDriver();
driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL,"t"); 

0
 Actions at=new Actions(wd);
 at.moveToElement(we);
 at.contextClick(we).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();

ভবিষ্যতে আপনার পোস্টগুলি বোঝার সহজ করার জন্য কোড স্নিপেটের সাথে কিছু ব্যাখ্যা পাঠ্য সরবরাহ করুন।
টাইলার Jandreau

0
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());

driver.switchTo().window(tabs.get(0));

0

একাধিক ট্যাবগুলি কীভাবে খুলবেন এবং ট্যাবগুলির মধ্যে স্যুইচ করবেন এবং শেষে সমস্ত ট্যাবগুলি বন্ধ করুন তা বুঝতে এই সম্পূর্ণ উদাহরণটি পরীক্ষা করুন

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);
 } }

এই উদাহরণটি এই ওয়েব পৃষ্ঠা দ্বারা দেওয়া হয়েছে


0

Https://bugs.chromium.org/p/chromedriver/issues/detail?id=1465 এ বাগের কারণে যদিও ওয়েবড্রাইভার.সুইচটো আসলে ট্যাবগুলি স্যুইচ করে, প্রথম ট্যাবে ফোকাসটি রেখে দেওয়া হয়। আপনি সুইচ উইন্ডোর পরে ড্রাইভার.টিগেট করে এটি নিশ্চিত করতে পারেন এবং দেখুন যে দ্বিতীয় ট্যাবটি মূল URL এ চলেছে, মূল ট্যাবে নয়।

@ ইয়ার্ডেনিং 2 প্রস্তাবিত এখন অবধি কাজ করে Work সতর্কতা খোলার জন্য js ব্যবহার করুন এবং তারপরে এটি গ্রহণ করতে ওয়েবড্রাইভার ব্যবহার করুন।


0

এই কোডটি আমার জন্য কাজ করছে (সেলেনিয়াম 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();
}

0

প্রশ্ন : জাভা দিয়ে সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে একটি নতুন ট্যাব কীভাবে খুলবেন?

উত্তর : যে কোনও লিঙ্কে ক্লিক করার পরে নতুন ট্যাব খুলুন।

আমরা যদি নতুন খোলা ট্যাব পরিচালনা করতে চাই তবে আমাদের .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));

    }

}

0

সেলেনিয়াম নতুন ট্যাব খোলার পক্ষে সমর্থন করে না, এটি কেবল নতুন উইন্ডো খোলার পক্ষে সমর্থন করে। সমস্ত উদ্দেশ্যে একটি নতুন উইন্ডো কার্যত কোনও নতুন ট্যাবের সমতুল্য।

ইস্যুটি নিয়ে কাজ করার জন্য বিভিন্ন হ্যাক রয়েছে তবে তারা আপনাকে দীর্ঘমেয়াদে অন্যান্য সমস্যার কারণ হতে পারে।


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();

-1
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");// open in new tab
driver.get("ur link");

-1

সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে ব্রাউজার উইন্ডো পরিচালনা করছেন:

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

প্রশ্নের সমাধান করতে ব্যর্থ F আপনি উত্তরটি ইতিমধ্যে বিদ্যমান উইন্ডোটিতে স্যুইচ করার বিষয়ে, ওপি একটি নতুন কীভাবে খুলতে হবে তা জানতে চেয়েছিলেন।
থমাস হিরশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.