Sử dụng SeleniumBasic mở trình duyệt chrome theo profile chrome (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

quockhanhzz

Thành viên mới
Tham gia
29/7/19
Bài viết
23
Được thích
2
Chào mọi người.
Em mới tìm hiểu VBA của excel.
Em muốn viết 1 đoạn code dùng Selenium Webdriver để có thể truy cập 1 thư mục chứa những user chrome mình đã tạo, và khi mở user chrome đó sẽ tự động mở 1 trang web do mình định sẵn.
Em không biết viết như thế nào, mong được mọi người hướng dẫn ạ. Em cám ơn.
 
Lần chỉnh sửa cuối:
User chrome là gì vậy bạn, thư mục chứa user chrome mình mới nghe lần đầu
 
Upvote 0
đoán là vầy
221968
 
Upvote 0
User chrome là gì vậy bạn, thư mục chứa user chrome mình mới nghe lần đầu

đây nè bạn, 1 tài khoản google là 1 user
Bài đã được tự động gộp:

nó tương tự như là 1 shortcut của chrome ak bác
mà nó có nhiều shortcut, em muốn dùng vòng lặp mở từng cái đó lên ak
 

File đính kèm

  • Capture.PNG
    Capture.PNG
    5.2 KB · Đọc: 12
  • Capture.PNG
    Capture.PNG
    5.2 KB · Đọc: 14
Upvote 0
Select, right click, properties, cho mình xem thử command lines nó là gì ?
 
Upvote 0
Bạn thử đoạn code dưới đây:

Đã dùng VBA thì không cần đến Shortcut. Bạn chỉ cần tạo Command Lines theo như Shortcut đã tạo là được.

Mỗi UserProfile nặng khoảng 600MB, bạn tạo càng nhiều càng chiếm dung lượng ổ cứng.


PHP:
'Vào Tools -> References thêm Microsoft Scripting Runtime'
Sub Test()
  RunURLWithChrome "www.google.com", "D:\Document\Profile1"
  'Hoặc RunURLWithChrome "www.google.com", "D:\Document\Profile1", "--disable-gpu" '.... các Argument của Chrome
End Sub

Sub RunURLWithChrome(URL$, Optional UserProfile$, Optional Arguments$ )
  Dim oShell As Object
  'Sửa đường dẫn trùng với Thư mục gốc của Chrome'
  Const Chrome = """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
  Set oShell = CreateObject("WScript.Shell")
  oShell.Run _
    Chrome & _
    IIf(Arguments <> "", " " & Arguments,"") & _
    IIf(UserProfile <> "", " --user-data-dir=" & UserProfile,"") & _
    " --lang=vi" & IIf(URL <> "", " ", "") & URL
  Set oShell = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử đoạn code dưới đây:

Đã dùng VBA thì không cần đến Shortcut. Bạn chỉ cần tạo Command Lines theo như Shortcut đã tạo là được.

Mỗi UserProfile nặng khoảng 600MB, bạn tạo càng nhiều càng chiếm dung lượng ổ cứng.


PHP:
'Vào Tools -> References thêm Microsoft Scripting Runtime'
Sub Test()
  RunURLWithChrome "www.google.com", "D:\Document\Profile1"
  'Hoặc RunURLWithChrome "www.google.com", "D:\Document\Profile1", "--disible-cpu" '.... các Argument của Chrome
End Sub

Sub RunURLWithChrome(URL$, Optional UserProfile$, Optional Arguments$ )
  Dim oShell As Object
  'Sửa đường dẫn trùng với Thư mục gốc của Chrome'
  Const Chrome = """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
  Set oShell = CreateObject("WScript.Shell")
  oShell.Run _
    Chrome & _
    IIf(Arguments <> "", " " & Arguments,"") & _
    IIf(UserProfile <> "", " --user-data-dir=" & UserProfile,"") & _
    " --lang=vi" & IIf(URL <> "", " ", "") & URL
  Set oShell = Nothing
End Sub

cám ơn a.
e đã thử thì nó sẽ mở userprofile mới, chứ không phải userprofile e tạo trước đó ạ, e muốn là mở từng userprofile e đã tạo sẵn ak a,
 

File đính kèm

  • Capture.PNG
    Capture.PNG
    49.5 KB · Đọc: 26
  • 1.PNG
    1.PNG
    17.8 KB · Đọc: 23
  • 2.PNG
    2.PNG
    13.6 KB · Đọc: 22
Lần chỉnh sửa cuối:
Upvote 0
Hì hì, user profile directory của từng user trong Google Chrome nó nằm ở đâu bạn, nằm trên Desktop à ?
 
Lần chỉnh sửa cuối:
Upvote 0
Sao để được trên đó hay vậy ? Trong thư mục đó có gì vậy bạn ?
 
Upvote 0
Khổ ghê, đó chỉ là các file shortcut. File shotcut chạy đúng không ? Nếu đúng thì properties - command lines xem command line là gì, rồi sữa lại cái code đi. Code sai đó.
 
Upvote 0
Khổ ghê, đó chỉ là các file shortcut. File shotcut chạy đúng không ? Nếu đúng thì properties - command lines xem command line là gì, rồi sữa lại cái code đi. Code sai đó.

vâng a, chạy được rồi, mà e dùng cái selenium webdriver để thực hiện ak anh, khi dùng nó là nó tự mở 1 user mới, e muốn nó mở user e tạo sẵn ak a
 
Upvote 0
Chạy được thì tốt rồi, có vài điểm cần chú ý, sữa cũng được, không sữa cũng chả chết thằng Tây nào:
1.Đã CreateObject thì không cần add reference.
2. Microsoft Scripting Runtime (scrrun.dll) không có define object/interface WScript.Shell
3. WScript.Shell interface nó nằm trong wshom.ocx: Windows Script Host Object Model
4. Cẩn thận ocx này không có trên Win64, nếu có tui nghĩ cũng không nên xài, vì phải load thêm nó nữa vào bộ nhớ của Excel/VBA.
Nên dùng các interface có sẵn của shell32.dll. Vì shell32.dll luôn luôn đã được load vào bộ nhớ với các app của Offices
Shell.ShellExecute(File As String, [vArgs], [vDir], [vOperation], [vShow])
 
Upvote 0
Chạy được thì tốt rồi, có vài điểm cần chú ý, sữa cũng được, không sữa cũng chả chết thằng Tây nào:
1.Đã CreateObject thì không cần add reference.
2. Microsoft Scripting Runtime (scrrun.dll) không có define object/interface WScript.Shell
3. WScript.Shell interface nó nằm trong wshom.ocx: Windows Script Host Object Model
4. Cẩn thận ocx này không có trên Win64, nếu có tui nghĩ cũng không nên xài, vì phải load thêm nó nữa vào bộ nhớ của Excel/VBA.
Nên dùng các interface có sẵn của shell32.dll. Vì shell32.dll luôn luôn đã được load vào bộ nhớ với các app của Offices
Shell.ShellExecute(File As String, [vArgs], [vDir], [vOperation], [vShow])
vâng anh, mà nó chạy được theo kiểu là mở và tạo 1 user mới ak a, chứ không phải theo user mình tạo sẵn, e cần là mở user e đã tạo sẵn và sử dụng selenium webdriver
 
Upvote 0
Cậu đọc kỹ lại post #13
 
Upvote 0
Cậu đọc kỹ lại post #13
dạ em xin lỗi.
lúc đầu e chỉ muốn mở file theo shortcut, sau đó e làm được rồi thì e nhận ra rẳng em không thể dùng tiếp selenium webdriver để xử lý những vấn đề tiếp theo. hi vọng a có thể giúp em mở từng shortcut và có thể dùng webdriver trong đó
 
Upvote 0
Chia "buồm" với bạn là tui không biết và không xài selenium webdriver bạn à. Bạn cố gắng tự mày mò tiếp đi.
 
Upvote 0
cám ơn a.
e đã thử thì nó sẽ mở userprofile mới, chứ không phải userprofile e tạo trước đó ạ, e muốn là mở từng userprofile e đã tạo sẵn ak a,
Bạn không hiểu thì tôi chịu thôi.

Chỉ cần RunURLWithChrome "www.google.com", "D:\Document\Profile1"

"D:\Document\Profile1" là Folder bạn đã lưu trữ dữ liệu user vào đấy.

Còn Argument --profile-directory không cần nữa thì bạn thêm vào làm gì,
đã được thay thế bằng --data-use-dir rồi.




Nếu bạn dùng Selenium Webdriver để điều khiển thì không thể mở được theo cách bình thường, mà phải mở ở chế độ debug.
Cần thêm Argument, ví dụ mở ở Port 9222: --remote-debugging-port=9222 ,

Ở Selenium Webdriver thêm Argument tương tự để kết nối.

Chrome không chạy ở chế độ Debug thì không thể thêm UserProfile nhé bạn.

Lưu ý với Selenium và Chrome: Chrome và ChromeDriver phải tương đồng phiên bản.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn không hiểu thì tôi chịu thôi.

Chỉ cần RunURLWithChrome "www.google.com", "D:\Document\Profile1"

"D:\Document\Profile1" là Folder bạn đã lưu trữ dữ liệu user vào đấy.

Còn Argument --profile-directory không cần nữa thì bạn thêm vào làm gì,
đã được thay thế bằng --data-use-dir rồi.




Nếu bạn dùng Selenium Webdriver để điều khiển thì không thể mở được theo cách bình thường, mà phải mở ở chế độ debug.
Cần thêm Argument, ví dụ mở ở Port 9222: --remote-debugging-port=9222 ,

Ở Selenium Webdriver thêm Argument tương tự để kết nối.

Với Selenium mà Chrome không chạy ở chế độ Debug thì không thể thêm UserProfile nhé bạn.

Lưu ý với Selenium và Chrome: Chrome và ChromeDriver phải tương đồng phiên bản.
Em cám ơn.
Anh có thể demo cho em 1 đoạn code mở profile chrome bằng selenium webdriver được không ạ
 
Upvote 0
Bạn đang sử dụng SeleniumBasic hay Selenium Webdriver vậy? Với VBA thì không có Selenium Webdriver
 
Upvote 0
Tôi đã sửa tí ở Code, bạn thử lại xem:

Vì thấy bạn đã đăng bài viết mới với chủ đề tương tự, nên tôi chỉ giúp bạn thêm một bài này nữa thôi nhé.

Code phần trước tôi thiếu --remote-debugging-port, vì có nó mới có thể thêm UserProfile, bạn chỉ cần điền đúng Folder
user đã tạo vào UserProfile:="D:\Document\Profile1".

Tôi không trợ giúp cho bạn phần Selenium bạn nhé.

PHP:
'Vào Tools -> References thêm Microsoft Scripting Runtime'
Sub Test()
  RunURLWithChrome "www.google.com",  UserProfile:="D:\Document\Profile1"
  ',Arguments:="--disable-gpu --start-maximized  --window-position=1920,1080"'
End Sub

Sub RunURLWithChrome(URL$, Optional Port& = 9222, Optional UserProfile$, Optional Arguments$ )
  Dim oShell As Object
  'Sửa đường dẫn trùng với Thư mục gốc của Chrome'
  Const Chrome = """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
  Set oShell = CreateObject("WScript.Shell")
  oShell.Run _
    Chrome & _
    IIf(Port > 0, " --remote-debugging-port=" & Port,"") & _
    IIf(Arguments <> "", " " & Arguments,"") & _
    IIf(UserProfile <> "", " --user-data-dir=" & UserProfile,"") & _
    " --lang=vi" & IIf(URL <> "", " ", "") & URL
  Set oShell = Nothing
End Sub
 
Upvote 0
Tôi đã sửa tí ở Code, bạn thử lại xem:

Vì thấy bạn đã đăng bài viết mới với chủ đề tương tự, nên tôi chỉ giúp bạn thêm một bài này nữa thôi nhé.

Code phần trước tôi thiếu --remote-debugging-port, vì có nó mới có thể thêm UserProfile, bạn chỉ cần điền đúng Folder
user đã tạo vào UserProfile:="D:\Document\Profile1".

Tôi không trợ giúp cho bạn phần Selenium bạn nhé.

PHP:
'Vào Tools -> References thêm Microsoft Scripting Runtime'
Sub Test()
  RunURLWithChrome "www.google.com",  UserProfile:="D:\Document\Profile1"
  ',Arguments:="--disable-gpu --start-maximized  --window-position=1920,1080"'
End Sub

Sub RunURLWithChrome(URL$, Optional Port& = 9222, Optional UserProfile$, Optional Arguments$ )
  Dim oShell As Object
  'Sửa đường dẫn trùng với Thư mục gốc của Chrome'
  Const Chrome = """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
  Set oShell = CreateObject("WScript.Shell")
  oShell.Run _
    Chrome & _
    IIf(Port > 0, " --remote-debugging-port=" & Port,"") & _
    IIf(Arguments <> "", " " & Arguments,"") & _
    IIf(UserProfile <> "", " --user-data-dir=" & UserProfile,"") & _
    " --lang=vi" & IIf(URL <> "", " ", "") & URL
  Set oShell = Nothing
End Sub
em cám ơn a nhiều.
mà cái em cần lại là selenium . :V
 
Upvote 0
@HeSanbi a vẫn dùng được Seleniumbasic để code với web chứ ạ?
e cài và code thử mà không chạy

Sub OpenBrowser()
Dim driver As New WebDriver
driver.Start "Chrome"
driver.Get "https://translate.google.com/?hl=vi"
End Sub

báo lỗi automation error ạ
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom