python으로 브라우저 컨트롤시에 selenium를 이용해서 컨트롤하는 경우

드라이버 생성을 특정함수 안에서 하게 되면 함수가 종료될때 브라우저도 같이 종료되는데,

가끔 종료되지 않았으면 할때 아래 방법대로 하면 됩니다.(다른 방법도 있을건데 잘 몰라서..)

 

핵심은 option에 add_experimental_option를 추가하고 "detach"를 True로 활성화 하면됩니다.

 

Edge의 경우(Chrome이나 다른 브라우저는 확인하지 않아서 잘 모름, 뭐 비슷하지 않을까 합니다.)

 

pip install msedge-selenium-tools

 

from msedge.selenium_toos import Edge, EdgeOption

이렇게 하면 from selenium import webdriver를 하지 않아도 됩니다.(당연히 msedgedriver.exe도 받지 않아도 되고)

 

edge_options = EdgeOptions()

edge_options.use_chromium = True

edge_options.add_experimental_option("detach", True)

 

browser = Edge(options=edge_options)

browser.get("http://~")

'기타' 카테고리의 다른 글

VSCode에서 Rust개발하기 - 개발환경설정(Windows 10)  (0) 2021.03.23
앞으로  (0) 2015.03.10
컬러매치  (0) 2013.11.14

WRITTEN BY
CAPAS

,

프로그램을 이것저것 막 하다보니 개발 환경 설정하는 것도 나름 힘들다. 예전에는 그냥 막 했던거 같은 것도 요즘다시 하려니 기억이 안나서 하나씩 정리해 둘까 한다.

 

오늘은 2번째로 C++이다

https://code.visualstudio.com에 들어가보면 쉽게 설명되어 있는데, 설명이 길어서 간단하게 요약정리한다.

 

1. C++컴파일러를 컴퓨터에 설치한다.
  위 사이트에 예로 MinGW-x64를 가지고 설치하는 법이 자세하게 나와있어 그대로 이용한다.
  sourceforge.net 에서 MinGW-w64 - for 32 and 64 bit Windows를 찾아서 설치한다.
  문제는 설치파일(installer)를 실행하면 에러를 내품고 중지한다. (2021-03-31) 위치를 바꿔보고, i686, x86_64, sjlj, seh 뭐 다 바꿔봐도
  그냥 에러만 내고 종료한다.  구글 검색해보니 나만 그런게 아니다....ㅎㅎㅎ

  파일 탭을 누르고 아래에서 "x86_64-posix-seh"를 찾아서 클릭하면 다운로드 페이지로 이동하면
  "x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7zx86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z"를 다운로드 받게된다.
  적당한 위치에 압축을 풀고 환경설정에서 PATH를 추가 해주면 된다.

  C:\Program Files 폴더에 복사해 놓고 여기에 풀기 하면 mingw64폴더가 생성되고 그 아래 파일이 생성된다.
  탐색기 내PC에서 오른쪽 버튼 클릭후 속성에서 고급 시스템 설정 -> 환경변수 -> 시스템변수에서 path 편집

  C:\Program Files\mingw64\bin를 추가후 확인.

  CMD창에서 g++ --version, gdb --version을 실행해서 버전 정보가 나오면 제대로 설치된것이다.

 

2. 프로젝트 폴더를 생성하고

3. VSCode를 실행, 확장프로그램에서 C/C++를 설치한다.

4. 프로젝트 폴더를 열어서

5. 확장자가 cpp인파일을 생성한다.

// helloworld.cpp

#include <iostream>

using namespace std;

int main() {

    cout << "Hello World" << endl; 

}

6. 메뉴의 Terminal에서 Run Build Task를 선택하고 C/C++: g++.exe build active file를 선택하면 빌드가 된다.

7. 아래 터미널 창에서 ./helloworld.exe입력하면 정상 실행된다.

8. 다시 Run Build Task를 선택하고 C/C++: g++.exe build active file의 오른쪽 톱니바퀴를 선택하면 .vscode폴더가 생성되고 tasks.json파일이 열린다.

{

    "version": "2.0.0",

    "task": [

        {

            "type": "cppbuild",

            "label": "C/C++: g++.exe 활성화 파일 빌드",

            "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",

            "args": [

                "-g",

                "${file}",

                "-o",

                "${fileDirname}\\${fileBasenameNoExtension}.exe"

            ],

            "options": {

                "cwd": "${workspaceFolder}"

            },

            "problemMatcher": [

                "$gcc"

            ],

            "group": {

                "kind": "build",

                "isDefault": true

            },

            "detail": "컴파일러: \"C:\\Program Files\\mingw64\\bin\\g++.exe\""

        }

    ]

}

 

이렇게 저장해 주고 다시 Run Build Task하면 컴파일러 선택창이 나오지 않고 자동으로 실행된다.

 

9. 마지막으로 F5눌러서 실행하도록 만들려면 

F5를 누르면 나오는 창에서 C++(Windows)를 선택하면 launch.json파일이 생성되면서 열리는데

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: http://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Windows) 시작",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "console": "externalTerminal"
        }
    ]
}

이렇게 수정후 저장하고 F5를 누르면 CMD창이 열리면서 프로그램이 실행된다.

CMD창이 열리는게 싫으면 console의 'externalTerminal'을 'internalTerminal'로 바꾸면 아래 터미널 창에서 실행된다.

 

이상..


WRITTEN BY
CAPAS

,

최근에 다시 Rust를 공부해보려고 VSCode랑 다시 설치하는데 예전에 했던게 기억이 안 나서 몇일을 고생했다.

다른 분들의 설치를 보면 예전에 내가 했던거랑 조금 다르다. 이것저것 많이 설치하는거 같기도 하고,

어째거나 몇일 고생해서 알아낸 부분들을 순서대로 입력해 둔다.

 

1. Visual Studio 사이트에서 vs_BuildTools.exe를 다운받아 설치한다. (mingw도 된다고 하는데 안 해봐서 잘 모름)

   리눅스의 경우 셋팅을 해보지 않아서 잘 모르겠는데, 윈도우즈의 경우 C++의 빌드 환경을 사용하도록 되어 있어

   미리 설치되어있지 않으면 설치하도록한다.

 

2. Rustup-init.exe 파일을 실행해서 설치한다.

   설치가 다되면 cmd 또는 Powershell환경에서 rustup --version, cargo --version를 실행후 정보가 나오는지 확인한다.

 

3. 새로운 Rust용  워크스페이스 폴더를 생성한다

   예) D:\Projects\Rust

 

4. VSCode를 실행하여 Rust용 확장기능을 추가한다.
   여기서 부터 예전과 달라서 많이 고생좀 했다. 사실 맞는지도 잘 모르겠다.
   이글을 작성하면서 다른 블로그를 보니까 C/C++확장기능 없이 실행환경을 꾸미는 것도 가능한가 보다

 

   Rust라고 치면 예전에선 Rust(rls)만 설치해서 사용했던거 같은데 지금은 Rust만나오고 뒤에 (rls)이 붙은거는
   찾아 보기
어렵다.  그냥 Rust(녹슨톱니바퀴,  rust-lang)만 설치하면 추가로 관련 기능을 설치한다고 오른쪽 아래

   알림이 뜬다. 모두 설치한다.

   첫번째 방법

   C/C++ 확장기능을 찾아 설치한다. ( 예전에는 설치하지 않았던거 같은데, 기억이 안난다)

 

   두번째 방법

   code runner를 설치한다.

   예전엔 이걸로 사용한 기억은 있다. 그때 c/c++ 확장기능설치는 안 했던거 같다. 

   여기서 끝 다른 아무것도 할 필요가 없다.

   코드를 작성하고 마우스 오를쪽 버튼으로 맨위 코드 실행을 선택하면 된다.

 

   근데 나는  다른 언어처럼 F5키로 컴파일과 실행을 진행하고 싶다.
   그래서 두번째 방법보다 첫번째 방법으로 진행한다.

 

5. VSCode에서 폴더열기를 해서 위에서 만들어 놓은 폴더를 선택한다.

 

6. 터미널 창을 열고(Ctrl+`) 

   D:\Projects\Rust>cargo new helloworld를 입력하여 helloworld 프로젝트을 생성한다.

   제대로 되었다면 helloworld폴더가 생성되고 그 아래 src등 몇가지 폴더및 파일이 생성된다. 정상이다.

 

7. VSCode에서 src폴더아래 main.rc파일을 열고

   Terminal > Run Task를 선택 cargo -> cargo build helloworld를 선택한다.

   아래 터미널창에서 Build가 이루어 진다.

   다시 Terminal > Run Task를 선택 cargo -> cargo run helloworld를 선택한다.

   아래 터미널에서 hello world가 나오면 정상적으로 실행된 것이다.

 

여기까지는 그냥 몇번이고 실패없이 실행했다. 문제는 다음부터다.
다른 블로그에선 확장기능을 몇가지 더 추가 하고, 하는게 난 뭔소린지 모르겠고 그대로 해도 안되고..짜증이..막..후~

 

8. main.rs 코드 화면에서 F5키를 누르면 컴파일 환경 선택하라고 나온다.
난 윈도우즈니까 C++(Windows)를 선택했다.

뭔가 에러가 나면서 launch.json추가하고 열건지 물어본다. 확인을 선택한다.

아무것도 수정하지 않고 다시 main.rs를 실행하면 ""파일을 찾을 수 없다고 나오면서 launch.json을 열겠냐고 물어본다

여기서부터 무한 반복이다. 온몸이 간질거린다.. 막 그만두고 싶다.

 

코드를 실행시키려고 'F5'키를 누르면 컴파일이 진행되면서 실행파일이 만들어 진다.

그 실행파일 위치는 프로젝트폴더의 target > debug 폴더아래 helloworld.exe(우리가 만든 프로젝트이름)파일로 생성되어 있다. 근데 F5키로 실행파일 찾지 못하는 것이다.

launch.json파일을 열어서  "program":"(~~~)" 이부분을 수정하면 된다.

 

VSCode에는 환경변수를 대신하는 단어들이 몇개 있는데 이거를 이용해서 위 가로 부분을 채우면 된다.

 

대부분 다른 블로그에선 "program": "${workspaceRoot}/target/debug/${workspaceFolderBasename}"이렇게 만 쓰라고 나온다. 난 아무리해도 안된다. 서로 환경이 달라서 그런건지. 

 

"program":"${workspaceRoot}/${command:extension.commandvariable.file.relativeFileDirname1Up}/target/debug/${command:extension.commandvariable.file.relativeFileDirname1Up}.exe"

 

이렇게 입력하면되는데, VSCode확장기능인 'Command Variable'을 설치해야된다.

원래 VSCode환경변수중는 'command:extension.commandvariable.file.relativeFileDirname1Up' 이런게 없다. 'relativeFileDirname'만 있다. 'relativeFileDirname'는 main.rs의 위치를 가리키는데 'helloworld/src' 이다. 이거를

둘로 나눠서 helloworld만 가져와야 하는데, 이 기능을 제공해주는 확장기능이 'Command Variable'이다.

'Command Variable'를 확장기능 설치하는 곳에서 찾아 설치한다.

 

9. main.rs에서 F5를 눌러 실행을 시킨다.. 돌아간다.

   프로그램을 수정하고 다시 F5키를 누른다. 수정 전의 프로그램만 수행된다. 

   미리 컴파일을 해줘야 한다.  위 7번의 첫번째줄을 먼저 실행하고 F5를 누르면된다.

   아래는 내 VSCode Rust launch.json, tasks.json파일이다.

   tasks.json은 컴파일 할때 사용되는 파일이다. 여러 파일을 컴파일 하다보면 cargo build 프로젝트명이 많이 나온다.

   그중에 선택하려면 힘드니까 tasks.json을 만들어 놓고  Terminal > Run Task 에서 맨위 Rust: cargo build만

   선택해 주면 된다. 나중에 launch.json에 컴파일 기능까지 추가 해야 함. 미리 컴파일을 해야되는 불편없이.

 

launch.json

--------------------------------------

{

    // Use IntelliSense to learn about possible attributes.

    // Hover to view descriptions of existing attributes.

    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",

    "configurations": [

        {

            "name": "시작",

            "type": "cppvsdbg",

            "request": "launch",

            "program": "${workspaceRoot}/${command:extension.commandvariable.file.relativeFileDirname1Up}/target/debug/${command:extension.commandvariable.file.relativeFileDirname1Up}.exe",

            "args": [],

            "stopAtEntry": false,

            "cwd": "${workspaceFolder}",

            "environment": [],

            "console": "integratedTerminal",

        }

    ]

}

------------------------------------------------

 

task.json

------------------------------------------------

{

    "version": "2.0.0",

    "tasks": [

        {

            "type": "cargo",

            "subcommand": "build",

            "problemMatcher": [

                "$rustc"

            ],

            "group": "build",

            "label": "Rust: cargo build"

        }

    ]

}

---------------------------------------------

 

몇일을 고생했다. 아~ 걍 하지 말까...

'기타' 카테고리의 다른 글

selenium 사용 중 브라우저 종료 하고 싶지 않을 때  (5) 2021.06.04
앞으로  (0) 2015.03.10
컬러매치  (0) 2013.11.14

WRITTEN BY
CAPAS

,