2017-04-26 9 views
5
static void Main() 
{ 
    IWebDriver driver = new ChromeDriver(); 
    driver.Navigate().GoToUrl("http://google.com"); 
    IWebElement body = driver.FindElement(By.TagName("body")); 

    body.SendKeys(Keys.Control + "t"); 

} 

के साथ काम नहीं इस कोड है कि मैं एक नया टैब और उसके काम नहीं कर रहा है, मैं किसी भी त्रुटि के लिए कुछ भी नहीं नहीं मिल रहा है, चालक गूगल खोलता है खोलने के लिए उपयोग करने के लिए कोशिश कर रहा हूँ है और यह सब .... मैंने बहुत कुछ खोजा है और कई ट्यूटोरियल भी पाए हैं जहां लोग सटीक कोड का उपयोग कर रहे हैं और यह उनके लिए काम करता है, लेकिन मेरे लिए यह नहीं है और मैं इसे समझ नहीं सकता ...सेलेनियम सी # खुला नया टैब Ctrl + टी CHROME

मैं खोज फ़ील्ड में Keys.Shift + "टी" भेजने की कोशिश की और यह काम करता है, यह क्षेत्र

मैं भी

की कोशिश की है में एक पूंजी टी लिखते हैं
Actions act = new Actions(driver); 
act.KeyDown(Keys.Control).SendKeys("t").Perform(); 

और यह अभी भी काम नहीं करता है, लेकिन फिर से मैं कुंजी बदलता हूं। कुंजी को नियंत्रित करें। इसे लिखने के लिए, ऐसा लगता है कि Keys.Control काम कर रहा है !!

संपादित करें: मैंने आईई चालक के साथ कोड चलाने का प्रयास किया है और यह वहां काम करता है, यह नया टैब खोलता है, लेकिन यह क्रोम पर नए टैब नहीं खोलता है?

उत्तर

0

अपने एक मैक, उपयोग पर Keys.Command बजाय Keys.Control की यदि यह

driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t"); 
driver.SwitchTo().Window(driver.WindowHandles.Last()); 
driver.Navigate().GoToUrl("http://www.google.com") 
+0

अन्य अजीब बात यही है, मैं driver.WindowHandles.Last() – Darkbound

+2

जोड़ें नहीं है "System.Linq का उपयोग कर," लिंक विधियों तक पहुंच के लिए। – Rushby

+0

कोशिश की, अभी भी काम नहीं कर रहा है, बस कुछ नहीं होता है, इससे कोई फर्क नहीं पड़ता कि मैं कुंजी के साथ किस संयोजन का प्रयास करता हूं। नियंत्रण नहीं कर रहा है, लेकिन Keys.Shift काम कर रहा है ... – Darkbound

0

का प्रयास करें:

body.SendKeys(Keys.Command + "t"); 
+0

धन्यवाद, लेकिन मै मैक पर नहीं हूं – Darkbound

+0

कोई समस्या नहीं सिर्फ एक विचार - आपका कोड उचित दिखता है। – Rushby

1

लगता है यह एक क्रोम चालक की "सुविधा" है जैसे।

https://bugs.chromium.org/p/chromedriver/issues/detail?id=581

इस तरह हम ChromeDriver में कीबोर्ड इनपुट अनुकरण में एक सीमा है। ब्राउजर प्रक्रिया को छोड़कर कुंजी सीधे रेंडर प्रक्रिया में भेजी जाती है। तो ब्राउजर प्रक्रिया में कोई भी कीबोर्ड शॉर्टकट हैंडलर sendKeys() द्वारा नहीं लगाया जाएगा।

3

उत्तर के लिए धन्यवाद! मैंने जावास्क्रिप्ट के साथ किया।

((IJavaScriptExecutor)driver).ExecuteScript("window.open();"); 
संबंधित मुद्दे