2017-04-26 42 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"); 

} 

Đây là mã mà tôi đang cố gắng sử dụng để mở tab mới và không hoạt động, tôi không gặp lỗi, trình điều khiển mở Google và tất cả ... Tôi đã tìm kiếm rất nhiều và tìm thấy nhiều hướng dẫn thậm chí cả video nơi mọi người đang sử dụng cùng một mã chính xác và nó hoạt động cho họ, nhưng đối với tôi nó không và tôi không thể tìm ra ...Selenium C# Mở tab mới CTRL + T Không hoạt động với CHROME

tôi đã cố gắng gửi Keys.Shift + "t" vào trường tìm kiếm và nó hoạt động, nó viết một T vốn trong lĩnh vực

tôi cũng đã cố gắng

Actions act = new Actions(driver); 
act.KeyDown(Keys.Control).SendKeys("t").Perform(); 

Và nó vẫn không hoạt động, nhưng một lần nữa nếu tôi thay đổi Keys.Control to Keys.Shift nó viết, có vẻ như không có gì liên quan đến Keys.Control đang hoạt động !!

Chỉnh sửa: Tôi đã thử chạy mã bằng trình điều khiển IE và nó hoạt động ở đó, nó sẽ mở tab mới nhưng không mở tab mới trên Chrome?

Trả lời

0

Hãy thử điều này

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

Thats điều kỳ lạ khác, tôi không có driver.WindowHandles.Last() – Darkbound

+2

Add "sử dụng System.Linq;" để truy cập vào các phương thức LINQ. – Rushby

+0

Đã cố gắng, vẫn không hoạt động, không có gì xảy ra, bất kể kết hợp nào tôi thử bằng Keys.Control không hoạt động, nhưng Keys.Shift đang hoạt động ... – Darkbound

0

Nếu bạn trên một mac, sử dụng Keys.Command thay vì Keys.Control:

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

Cảm ơn, nhưng tôi không ở trên máy Mac – Darkbound

+0

Không có vấn đề gì chỉ là suy nghĩ - mã của bạn có vẻ hợp lý. – Rushby

1

Hình như đó là một "tính năng" của tài xế chrome.

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

Đây là một hạn chế trong cách chúng ta mô phỏng đầu vào bàn phím trong ChromeDriver. Phím được gửi trực tiếp đến quá trình hiển thị, bỏ qua quá trình trình duyệt. Vì vậy, bất kỳ trình xử lý phím tắt nào trong quá trình trình duyệt sẽ không được gọi bởi sendKeys().

3

Cảm ơn câu trả lời! Tôi đã làm nó với JavaScript.

((IJavaScriptExecutor)driver).ExecuteScript("window.open();"); 
Các vấn đề liên quan