Hỏi về lấy chữ trên web bằng Cefsharp

Em có làm như sau ạ:

public Form1()
            {
                InitializeComponent();
                chromiumWebBrowser1.load("https://vi.wikipedia.org/wiki/Tr%E1%BA%ADn_Agincourt");
            }

        private void Button1_Click(object sender, EventArgs e)
        {
            
                string script = "document.evaluate('//*[@id='firstHeading']', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent;";
                chromiumWebBrowser1.EvaluateScriptAsync(script);
               
        }   

Em có chạy đoạn script trên chrom thì thu được thế này:

document.evaluate('//*[@id="firstHeading"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent;
"Trận Agincourt"
  • Giờ em muốn đổ chữ “Trận Agincourt” vào richTextBox thì làm thế nào ạ. Em cảm ơn!!!

Phương thức EvaluateScriptAsync() trả về kiểu Task<JavascriptResponse>.

var text = chromiumWebBrowser1.EvaluateScriptAsync(script).Result.ToString();

Thuận lợi nếu không có lỗi, khi có lỗi thì sẽ khác. Có nhiều ví dụ trên mạng về trường hợp thực thi xảy ra lỗi.

2 Likes

Em đã chạy

    string script = string.Format("document.getElementById('firstHeading').textContent;");
    richTextBox1.Text = chromiumWebBrowser1.EvaluateScriptAsync(script).Result.ToString();

Nó trả về thế này bác ạ: CefSharp.JavascriptResponse

À, gọi thêm Result nữa của JavascriptResponse.

var text = chromiumWebBrowser1.EvaluateScriptAsync(script).Result.Result.ToString();

Đối tượng của lớp JavascriptResponse sẽ có các thuộc tính cho biết việc thực thi thành công hay không và giá trị trả về.
Bạn nên xem tài liệu và các ví dụ để hiểu thêm.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?