Dev.Op
Yollow ๐Ÿ“š
Dev.Op
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (701)
    • ์œ ์ตํ•˜์…จ๋‹ค๋ฉด ๊ด‘๊ณ  ํ•œ๋ฒˆ๋งŒ ํด๋ฆญ ๋ถ€ํƒ๋“œ๋ฆด๊ฒŒ์š”~ (0)
    • ---------------------------.. (0)
    • Stock (1)
      • ์Šˆํผ๋งˆ์ดํฌ๋กœ์ปดํ“จํ„ฐ (2)
    • ๐Ÿง์ „๊ธฐ์ฐจ (72)
      • ๐Ÿ„lg์—๋„ˆ์ง€์†”๋ฃจ์…˜ (0)
      • ๐ŸŠํ˜„๋Œ€์ž๋™์ฐจ (0)
    • ๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด (243)
      • ๐Ÿ’ปpython (85)
      • โž•C & C++ (1)
      • โ˜•๏ธTableau (32)
      • ๐Ÿ‘‹SQL & MySQL (20)
      • ๐ŸฌHTML & CSS (14)
      • ๐Ÿ“—JavaScript (31)
      • ๐Ÿ“˜Pspice & Excel (2)
      • ๐Ÿ“•Matlab & COMSOL & CATIA (6)
      • ๐Ÿ“™java & Servlete & JSP (29)
      • ๐Ÿ““Raspberry PI 4 (5)
      • ๐Ÿ”จAnsys (2)
      • DJango (0)
      • Flutter (3)
      • Typescript (0)
      • ๐Ÿ†Vue (5)
      • ๐Ÿ‹Docker (1)
    • ๐Ÿ“‹์ฑ„์šฉ๊ณต๊ณ  (0)
    • ๐Ÿ“WEB & ML & DL ํ”„๋กœ์ ํŠธ (27)
      • ๐ŸŒต2์ฐจ ํ”„๋กœ์ ํŠธ(LG) (9)
    • ๐Ÿงฉ์ผ์ƒ (89)
      • ๐ŸŒค์ฝ”๋”ฉ ๊ณต๋ถ€ ์ผ์ง€ (1)
      • ๐Ÿšด์ž์ „๊ฑฐ (5)
      • ๐Ÿ“ฐํ…Œํฌ (20)
      • ๐ŸฆFood & Cafe (5)
      • ๐Ÿ’‰์˜์–ด ๋„์ ์ด๊ธฐ (5)
      • โšก๋ฐœ์ „์†Œ (6)
      • ๐Ÿ“š๋…์„œ (1)
      • ๐Ÿ›ซ์—ฌํ–‰ (2)
      • ๐Ÿ“ˆ๋ธ”๋กœ๊ทธ๋งˆ์ผ€ํŒ… (6)
    • ๐ŸŒ๊ธˆ์œต (37)
    • ๐ŸŽจ์ทจ์—…End (16)
    • ๐Ÿ‘‹์ž๊ฒฉ์ฆ (150)
      • ๐Ÿ™ˆSQLD๊ฐœ๋ฐœ์ž (12)
      • ๐Ÿ”Œ์ „๊ธฐ๊ธฐ์‚ฌ (116)
      • ๐Ÿข์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (7)
      • ๐ŸŒŽADsP(๋ฐ์ดํ„ฐ๋ถ„์„์ค€์ „๋ฌธ๊ฐ€) (10)
      • ๐Ÿš™1์ข… ๋Œ€ํ˜• ์šด์ „ ๋ฉดํ—ˆ (1)
      • โญTableau Desktop Specialist (2)
    • ๐Ÿฅ‡๊ณต๋Œ€์ด๊ฑฐ์ €๊ฒƒ(๋ง‰ํ•™๊ธฐ) (24)
      • ๐Ÿ“๊ณตํ•™์ˆ˜ํ•™ 2 (1)
      • ๐Ÿบ๋งˆ์ดํฌ๋กœํ”„๋กœ์„ธ์„œ์‹ค์Šต (4)
      • ๐ŸŒCAE (10)
      • โœˆ๏ธ์ž๋™์ฐจ๊ณตํ•™์‹คํ—˜2 (0)
      • ๐Ÿšข์œ ์ฒด์—ญํ•™ (6)
      • ๐Ÿš—ํ˜„๋Œ€์ฐจ H-๋ชจ๋นŒ๋ฆฌํ‹ฐ ํด๋ž˜์Šค 1๊ธฐ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    ๊ณต์ง€์‚ฌํ•ญ

    • Vue, Typescript, React, Tableau,โ‹ฏ
    • ์ง„์ธ์‚ฌ๋Œ€์ฒœ๋ช…(็›กไบบไบ‹ๅพ…ๅคฉๅ‘ฝ)

    ์ธ๊ธฐ ๊ธ€

    ํƒœ๊ทธ

    • css
    • ์‚ผ์„ฑ์ „์ž
    • ADsP
    • Python
    • fluid mechanics
    • ๋ฐฑ์ค€
    • ipad dual monitor
    • ์ „๊ธฐ์ฐจ
    • ์—…๋น„ํŠธ
    • ์—๋””์Šจev
    • ์ง๋ ฌ๋ฆฌ์•กํ„ฐ
    • ์—”์†”
    • ์œ ์ฒด์—ญํ•™
    • ๋น…๋ฐ์ดํ„ฐ๋ถ„์„์ค€์ „๋ฌธ๊ฐ€
    • rdfr
    • SMCI
    • vue btn
    • lgํ™”ํ•™
    • ์•„์ด์˜ค๋‹‰5
    • ๋น…๋ฐ์ดํ„ฐ
    • LG์—๋„ˆ์ง€์†”๋ฃจ์…˜
    • ์ž๋ฐ”
    • ์—”๋น„๋””์•„
    • ๋ถ€๋“ฑ๋ฅ 
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋””์นด๋ฅด๊ณ 
    • ์ „๊ธฐ์ฐจ ๋ณด์กฐ๊ธˆ 2021
    • ๋ธŒ๋ฃจํŠธํฌ์Šค
    • html
    • ํ…Œ์Šฌ๋ผ

    ์ตœ๊ทผ ๋Œ“๊ธ€

    ์ตœ๊ทผ ๊ธ€

    ํ‹ฐ์Šคํ† ๋ฆฌ

    hELLO ยท Designed By ์ •์ƒ์šฐ.
    Dev.Op

    Yollow ๐Ÿ“š

    ๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด/๐Ÿ’ปpython

    [python] ํฌ๋กค๋ง implicit wait vs time.sleep

    2021. 11. 25. 00:52
    ๋ฐ˜์‘ํ˜•

    ํฌ๋กค๋ง ํ•˜๋‹ค๋ณด๋ฉด, ์ž ์‹œ ์ฝ”๋“œ ์‹คํ–‰์„ ๋ฉˆ์ถฐ์•ผ ํ•  ํ•„์š”๊ฐ€ ์ƒ๊ธด๋‹ค.

     

    ์ฃผ๋œ ์š”์ธ์€ 2๊ฐ€์ง€๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ,

     

    ์ฒซ๋ฒˆ์จฐ, ์ฝ”๋“œ์˜ ์‹คํ–‰์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋นจ๋ผ, ์›น ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก์ด ๋А๋ ค์„œ, ์‹ค์ œ ์‚ฌ์ดํŠธ๊ฐ€ ์—ด๋ฆฌ์ง€๋„ ์•Š์•˜๋Š”๋ฐ ์ฝ”๋“œ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์”นํžˆ๊ฒŒ ๋œ๋‹ค. 

     

    ๋‘๋ฒˆ์งธ, ๋ฐ˜๋ณต์ ์ธ ํฌ๋กค๋ง ์ž‘์—…์€ ์„œ๋ฒ„์— ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ์œ ๋ฐœํ•˜๋Š” ํฐ ์š”์ธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, ์ž์นซํ•˜๋ฉด ์šฐ๋ฆฌ์˜ ip๊ฐ€ ์ž ๊น ์ •์ง€ ๋‹นํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ํฌ๋กค๋ง ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ip๊ฐ€ ๋ง‰ํ˜€๋ฒ„๋ฆฌ๋ฉด, ์ด๋ณด๋‹ค ์‹ฌํ•œ ๊ฒฝ์šฐ๋Š” ์—†์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ ์ ˆํ•œ ์‰ฌ์–ด๊ฐ์˜ ๋ฏธํ•™์ด ํ•„์š”ํ•œ ๊ฒƒ์ด๋‹ค.

     


    ๋ณธ๊ฒฉ์ ์œผ๋กœ time.sleep ๋ฌธ๊ณผ implicit wait ๋ฌธ์„ ๋น„๊ตํ•˜๋ฉด, ํ™•์‹คํžˆ time.sleep ๋ณด๋‹ค implicit wait ์ด ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค. ์•„๋‹ˆ๋‹ค.

    ํฌ์ŠคํŒ…์„ ํ•˜๋‹ค๋ณด๋‹ˆ, 3๊ฐ€์ง€ explicit wait ๊นŒ์ง€ ์ „๋ถ€ ์ œ๋Œ€๋กœ ์•Œ๊ณ , ์ ์ ˆํžˆ ์„ž์–ด์„œ ์“ฐ๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ๋ฉด์ด๋‚˜ ์•ˆ์ •๋„๋ฉด์ด๋‚˜ ๊ฐ€์žฅ best ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

     

    ์ „์ œ์กฐ๊ฑด์€ ip ๋ถ€ํ•˜์— ์ƒ๊ด€์—†์ด, ๋น ๋ฅด๊ฒŒ ํฌ๋กค๋งํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.

     

    ๋งŒ์•ฝ์— ์ข€ ์‚ฌ์ดํŠธ๊ฐ€ ํ—ค๋น„ํ•˜๊ณ , ์ด๋Ÿฌํ•œ ์ฐจ๋‹จ ๋Šฅ๋ ฅ์ด ์žˆ๋‹ค๋ฉด, time.sleep๋ฌธ์„ ํ†ตํ•ด ๊ฐ•์ œ๋กœ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋‹ค.

     

    ๊ทธ ์ „์— ๊ธฐ๋ณธ์ ์ธ time.sleep ๊ณผ implicit wait์˜ ์ฐจ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

     


    time.sleep

    import time
    
    time.sleep(2)

    ๊ทธ๋ž˜๋„ ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์•„์ง€๋ฉด, ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•ด์•ผ ๋  ๊ฒƒ๊ฐ™๋‹ค.

     

    - ์ผ๋ถ€ ip์—์„œ๋Š” ๋™์ผํ•œ ์‹œ๊ฐ„์„ ์‰ฌ๊ณ  ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๋„ ๋ง‰์„์ˆ˜๋„ ์žˆ์œผ๋‹ˆ, ๊ฐ€์žฅ best๋Š” random ํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด๋‹ค

    - random ํ•จ์ˆ˜๋Š” random ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€์•ผํ•œ๋‹ค.

     

    import time
    import random
    
    for url in url_list:
        html = requests.get(url).text
        time.sleep( random.uniform(1,4) )   # 1~4์ดˆ ์‚ฌ์ด ๋žœ๋คํ•œ ์‹œ๊ฐ„์œผ๋กœ  ์‰ฌ์–ด์ค˜
        
        # ๋˜๋Š”
        time.sleep(random.randint(1,4))  # 1~4์ดˆ ์‚ฌ์ด ๋žœ๋คํ•œ ์‹œ๊ฐ„์œผ๋กœ  ์‰ฌ์–ด์ค˜
        								# ์ž…๋ ฅ ํŒŒ๋ผ๋ฏธํ„ฐ a๋ถ€ํ„ฐ b๊นŒ์ง€์˜ ๋ฒ”์œ„ ์ค‘ 
                                        # ์ž„์˜์˜ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ (a <= N <= b)
        
        # ๋˜๋Š”
        time.sleep(random.random()) #  ๋ฐ˜ ์—ด๋ฆฐ ๊ตฌ๊ฐ„(semi-open range) 
        							# [0.0, 1.0) ๋ฌด์ž‘์œ„ float ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜

     

    implicit wait

    ๋ณดํ†ต์€ explicitly wait ๋„ ๊ฐ™์ด ์žˆ๋Š”๋ฐ, ๋‚˜๋Š” ๊ทธ๊ฒƒ๋ณด๋‹ค ์ด๊ฒŒ ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

    ์šฐ์„ , ๋ฌด์—‡๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด, ์„œ๋ฒ„๋ž‘ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹œ๊ฐ„์ฐจ๋ผ๋Š” ๊ฒƒ์ด ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค.

     

    ์˜ˆ๋ฅผ๋“ค์–ด, driver.get(‘https://naver.com’) ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ฉด,

    ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋„ ์ „์—, ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ์žˆ๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

     

    ์— ๋Œ€ํ•œ ๋‚˜์˜ ๋‹ค์Œ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋ฉด,

    ์ปดํ“จํ„ฐ๋Š” ๋‹น์—ฐํžˆ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ฒŒ ๋œ๋‹ค.

     

    ์—ฌ๊ธฐ์„œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ํ™”๋ฉด์ด ๋œฐ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ธ๋ฐ, ์…€๋ ˆ๋‹ˆ์›€์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด 2๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

     

    ๋ฐ”๋กœ implicitly wait (์›นํŽ˜์ด์ง€ ์ „์ฒด๊ฐ€ ๋„˜์–ด์˜ฌ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ๋ฒ•) ์™€ explicitly wait (์›นํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„์ด ๋‚˜ํƒ€๋‚ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ) ์ด๋‹ค.

     

    ์ด๊ฒŒ ์ข‹์€๊ฒŒ, ๋ฐ”๋กœ 10์ดˆ๋กœ ์ž…๋ ฅ์„ ํ•ด๋†”๋„ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ , ์‚ฌ์ดํŠธ๊ฐ€ ์ ‘์†ํ•˜๋Š”๋ฐ 1์ดˆ๋งŒ์— ์ž˜ ์—ฐ๊ฒฐ์ด ๋˜์—ˆ๋‹ค๋ฉด, 10์ดˆ๊ฐ€ ์ง€๋‚˜์ง€ ์•Š์•„๋„ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ์ ‘์†์ด ์›ํ• ํ•˜์ง€ ์•Š๊ณ  ์›นํŽ˜์ด์ง€๊ฐ€ ๋„˜์–ด์˜ค์ง€ ์•Š์„๋•Œ๋Š”, ๊ธฐ๋‹ค๋ ค๋ณด๋‹ค๊ฐ€ 10์ดˆ ์ดํ›„์— ๊ทธ๋ƒฅ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

     

    ์—ฌ๊ธฐ์„œ ํฐ ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค.

    ์–ด๋–ค ์‚ฌ์ดํŠธ๋Š” ์ ‘์†์„ ํ• ๋•Œ ํ•œ๋ฒˆ์— ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋‹ค ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์ „์ฒด ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ ๋จผ์ € ๋‚˜์˜ค๊ฑฐ๋‚˜ ๋Šฆ๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

    ์ด๊ฒƒ์„ ๋™์ DOM ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ ์–ด๋ ค์šด ์šฉ์–ด์ด๊ธด ํ•˜๋‹ค. ์‹ฌํ”Œํ•˜๊ฒŒ, ํ•œ๋ฒˆ์— ์›นํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜๋ผ.

     

    ์ด๋Ÿฐ ๊ฒฝ์šฐ์— implicitly wait ๋ฅผ 8์ดˆ๋กœ ์„ค์ •ํ•˜๊ณ , 1์ดˆ๋งŒ์— ๋„˜์–ด์™”๋Š”๋ฐ, ์›นํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด, ๊ทธ ์ผ๋ถ€๋ถ„์ด ํ™”๋ฉด์ƒ์—์„œ ๋ Œ๋”๋ง ๋˜๋А๋ผ ๋Šฆ๊ฒŒ ํ‘œ์‹œ๋˜์—ˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒํ• ๊นŒ?

     

    ์˜ˆ๋ฅผ๋“ค์–ด, ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ์ ‘์†ํ–ˆ๋Š”๋ฐ, ๋‚ด์šฉ์€ ๋œจ์ง€๋งŒ, ๊ตฌ๊ธ€ ์—๋“œ์„ผ์Šค ๊ด‘๊ณ ์˜ ๊ฒฝ์šฐ, ๋กœ๊ณ ๋งŒ ๋œจ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

     

    ์ด๋–„ ๋ฌธ์ œ๋Š”, ์›นํŽ˜์ด์ง€ ๋‹จ์—์„œ ์ •๋ณด๊ฐ€ ๋„˜์–ด์™”์œผ๋‚˜, ์ผ๋ถ€ js์˜ ๋‚ด์šฉ์ด ๋ Œ๋”๋ง ๋˜๊ธฐ ์ „์— ๊ทธ ๋‹ค์Œ ๋ช…๋ น์–ด๊ฐ€ ์ž‘๋™์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

     

    ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด, explicitly wait ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ”๋กœ ๋‚ด๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š”, ํฌ๋กค๋งํ•˜๊ณ ์ž ํ•˜๋Š” ๋ถ€๋ถ„์ด ํ‘œ์‹œ๋  ๋–„๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ์˜๋ฌดํ™”ํ•ด๋†“๋Š” ๊ฒƒ์ด๋‹ค.

     

    ๊ธฐ๋ณธ์ ์œผ๋กœ import ํ•ด์•ผํ•˜๋Š” ๋ชจ๋“ˆ์ด ๋งŽ์œผ๋‹ˆ, ์ฐธ๊ณ ํ•˜์ž.

     

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    driver = webdriver.Chrome('chromedriver.exe')
    driver.get("https://naver.com")
    
    element = WebDriverWait(driver, 8).until( EC.presence_of_element_located(By.ID, "idname") ) )

    1)

    ๋Œ€๋žต์ ์ธ ์„ค๋ช…์œผ๋กœ, element ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑ ->

     

    2)

    WebDriverWait(driver, 8) ๊ตฌ๋™ํ•œ driver๋Š” ์…€๋ ˆ๋‹ˆ์›€์œผ๋กœ ๊ตฌ๋™ํ•œ ๋“œ๋ผ์ด๋ฒ„๋กœ์„œ,

    8์ดˆ๊นŒ์ง€ ๊ทธ ๋ถ€๋ถ„์ด ํ•„์š”ํ• ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค๋ณด๊ฒ ๋‹ค๋Š” ์˜๋ฏธ [(๋ฌผ๋ก  8์ดˆ ์ด์ „์— ๊ทธ ๋ถ€๋ถ„์ด ๋‚˜ํƒ€๋‚˜๋ฉด 8์ดˆ๊นŒ์ง€ ๋‹ค ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๊ฒƒ!!)]

     

    3)

    -> ์–ด๋–ค ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฒƒ์ธ์ง€? -> ์—˜๋ ˆ๋จผํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ํ•ด๋‹น ์—˜๋ ˆ๋จผํŠธ๋ฅผ element ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ด

     

    4)

    EC.presence_of_element_located( ) ๊ด„ํ˜ธ ์•ˆ์˜ ์š”์†Œ๊ฐ€ ๋‚˜์˜ฌ๋–„๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋ผ๋Š” ์˜๋ฏธ๋กœ์„œ,

    ๋ณดํ†ต ID ๊ฐ’์ด๋‚˜, ํด๋ž˜์Šค์ด๋ฆ„, xpath, name, css_selector, partial_link_text(์ผ๋ถ€ ํ…์Šค๋งŒ ์ผ์น˜), link_text(์ „๋ถ€ ์ผ์น˜)

     

    ๊ธฐ์กด์˜ find_by_element_class_name ๋“ฑ๊ณผ ๊ฐ™์ด find_by~  ๊ตฌ๋ฌธ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉฐ, 

    ์ „์ฒด ๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งˆ์ง€๋ง‰์— 3๊ฐœ๊ฐ€ ์˜จ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์ง€๋ง์ž.

     

    (By.ID, ‘์•„์ด๋””์ด๋ฆ„’)
    (By.CLASS_NAME, ‘ํด๋ž˜์Šค๋ช…’)
    (By.XPATH, ‘xpath๊ฒฝ๋กœ’)
    (By.NAME, ‘๋„ค์ž„๋ช…’)
    (By.CSS_SELECTOR, ‘CSS์…€๋ ‰ํ„ฐ’)
    (By.PARTIAL_LINK_TEXT, ‘๋งํฌํ…์ŠคํŠธ์ผ๋ถ€๋ถ„’)
    (By.LINK_TEXT, ‘๋งํฌํ…์ŠคํŠธ(์ „๋ถ€์ผ์น˜)’)

     

     

    EC.element_to_be_clickable((By.ID, 'up')
    
    EC.element_to_be_clickable((By.CLASS_NAME, 'car_class')
    
    EC.element_to_be_clickable((By.NAME, 'KimJ')

    ๋

    ๋ฐ˜์‘ํ˜•
    ์ €์ž‘์žํ‘œ์‹œ

    '๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด > ๐Ÿ’ปpython' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [Python] TypeError: 'NoneType' object is not iterable ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•  (0) 2021.11.25
    [python] ํŒŒ์ด์„  pd.concat  (0) 2021.11.25
    [python] ํฌ๋กค๋ง์— ํ•„์š”ํ•œ ํ•จ์ˆ˜ : filter, lambda, map  (0) 2021.11.25
    python ์ฝ”๋“œ ์‹œ๊ฐ„ ๊ณ„์‚ฐ  (0) 2021.11.24
    Kernel died with exit code 1073741845 ์—๋Ÿฌ  (0) 2021.11.23
      '๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด/๐Ÿ’ปpython' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
      • [Python] TypeError: 'NoneType' object is not iterable ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
      • [python] ํŒŒ์ด์„  pd.concat
      • [python] ํฌ๋กค๋ง์— ํ•„์š”ํ•œ ํ•จ์ˆ˜ : filter, lambda, map
      • python ์ฝ”๋“œ ์‹œ๊ฐ„ ๊ณ„์‚ฐ
      Dev.Op
      Dev.Op
      Interest: CS, Drive

      ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”