2011-11-23 39 views
9

Tôi đang sử dụng Selenium WebDriver và gặp sự cố.Làm thế nào để gỡ lỗi Selenium WebDriver hành động?

Trong giao diện người dùng, các phần tử được WebDriver nhìn thấy nhưng không thể thực hiện bất kỳ hành động nào như nhấp, nhập, chọn v.v. Các phần tử được tìm thấy bởi selen và được trả về dưới dạng cá thể của webelement. Tôi có thể nhận được, getText(), isEnabled() vv, nhưng sẽ không thực hiện bất kỳ hành động nào. Không có ngoại lệ. Nó chỉ bị treo.

Tôi không hiểu hành vi này. Nếu nó được nhìn thấy bởi WebDriver, nó sẽ nhấp vào. Tôi đã thử sử dụng hành động. Điều đó cũng cho thấy hành vi tương tự.

Làm cách nào để gỡ lỗi vấn đề này? Bất kỳ ý tưởng?

Trả lời

2

Cách duy nhất để gỡ lỗi mã là viết trình bao bọc xung quanh WebDriverEventListener và lắng nghe nhật ký. Khác khôn ngoan, nó là không thể.

+0

Bạn có mã cho điều này không? Tôi rất quan tâm đến trình bao bọc cũng như cách thiết lập nhật ký trong Selenium 2 WebDriver. – MacGyver

+1

@MacGyver, Từ webdriver 2.15.0, ghi nhật ký được giới thiệu. Vì vậy, tôi nghĩ rằng không cần phải viết mã cho điều đó. Thậm chí bạn có thể đặt mức nhật ký. Dùng thử phiên bản mới nhất. – Rajasankar

+0

Tôi đã tìm ra cách để làm điều đó trong Visual Studio mà không sử dụng trình bao bọc này. Xem câu trả lời của tôi để biết thêm chi tiết. – MacGyver

4

Nhắc nhở nhỏ: WebDriver có thể tìm kiếm các yếu tố trên trang bị "ẩn" bởi CSS.

Các mục này được tìm thấy nhưng không thể nhấp (hoặc bất kỳ hành động nào khác).

Thử gọi phương thức isDisplayed();

0

Nếu bạn đang sử dụng Nunit và trình điều khiển máy khách C#, bạn có thể đính kèm Visual Studio vào quá trình nunit-agent.exe của bạn bằng cách vào Tools> Attach to Process> chọn "nunit-agent.exe"> Đính kèm.

Bạn có thể làm tương tự khi sử dụng JUnit và trình điều khiển máy khách Java, bằng cách gắn vào quy trình nunit-agent.exe trong Eclipse.

===========

Để trả lời các câu hỏi khác của bạn ...

1.) Bạn có thể cần để biến sự kiện có nguồn gốc trên cho lái xe của bạn để xem Javascript sự kiện.

2.) Tôi cũng tìm thấy một số lỗi phần mềm với WebDriver cho các giá trị Bắt/Cài đặt. Hãy thử chúng để lấy InnerHtml (aka getText) mà bạn đã giải thích trong câu hỏi của bạn. Đây là mã .NET 4.0 .. vì vậy bạn có thể cần sửa đổi nó một cách thích hợp. Đây là trong lớp Element của tôi, do đó tiền tố của "Element" trên các phần tử lồng nhau gọi.

public static int GetInnerHtmlByXPathTypeInt(IWebDriver driver, string xpath) 
{ 
    return int.Parse(Element.GetInnerHtmlByXpath(driver, xpath)); 
} 
public static double GetInnerHtmlWithoutDollarSignByXPath(IWebDriver driver, string xpath) 
{ 
    return double.Parse(Element.GetInnerHtmlByXpath(driver, xpath).Replace("$", string.Empty)); 
} 

public static string GetValueByXPath(IWebDriver driver, string xpath) 
{ 
    return driver.FindElement(By.XPath(xpath)).GetAttribute("value"); 
} 

public static string GetInnerHtmlByXpath(IWebDriver driver, string xpath) 
{ 
    return driver.FindElement(By.XPath(xpath)).Text; 
} 
Các vấn đề liên quan