Có thể trường hợp IE không được xử lý đúng cách. Bạn sẽ muốn kiểm tra Trình quản lý tác vụ và xem có bao nhiêu quy trình IEXPLORE.EXE mở mà bạn đang chạy. Nếu bạn có nhiều hơn hai, tôi sẽ đề nghị thực hiện một khối sử dụng và sau đó kiểm tra Task Manager lần nữa:
using (IE ie = new IE(URLs.mainURL)
{
...
}
Một giải pháp tốt hơn là nên sử dụng phương pháp AttachTo một khi bạn đã khởi tạo một "bậc thầy" biến dụ trình duyệt :
private IE ie = new IE();
public void btnStartBrowsing_Click(object sender, EventArgs e)
{
using ie2 = ie.AttachTo<IE>(Find.ByUrl(URLs.mainURL))
{
...
}
}
UPDATE: vì bạn cần truy cập vào trình duyệt trong suốt thời gian của phiên giao dịch, tôi sẽ đề nghị sử dụng một đối tượng singleton đến nhà đối tượng trình duyệt:
public sealed class BrowserIE
{
static readonly IE _Instance = new IE();
static BrowserIE()
{
}
BrowserIE()
{
}
public static IE Instance
{
get { return _Instance; }
}
}
Trình duyệt chỉ mở một lần và bạn có thể truy cập vào bất cứ khi nào bạn cần, vì bạn không phải khởi tạo thủ công. Để sử dụng nó, bạn chỉ cần gọi thuộc tính Instance mỗi lần bạn cần truy cập vào trình duyệt:
BrowserIE.Instance.GoTo(URLs.mainURL);
Divs headerDivs = BrowserIE.Instance.Divs.Filter(Find.ByClass("header"));
Nguồn
2010-09-22 16:27:43
Xin lỗi vì đã trả lời trễ Neil T nhưng tôi đã xem xét nhiều kiến trúc khác nhau để thực hiện nhưng vẫn còn Tôi đã gặp lỗi thứ ........ Hơn nữa tôi cần sử dụng cá thể cho toàn bộ thời gian chạy ứng dụng. .............................. và các bạn hãy giúp tôi trong câu hỏi này cũng http://stackoverflow.com/questions/3766784/problem-in-updating-datagridview-via-a-thread-khi-scrolling –