2017-01-28 1 views
1

send_keys의 메시지 상자에 변수를 전달하기 위해 루프 내에서 루프를 수행하려고합니다. 나는 변수에 전달하려는 정보가있는 두 번째 파일 "test2.txt"를 열 때 오류가있는 것 같습니다. 저는 파이썬에 대해 아주 익숙하지 않습니다. 그리고 그것이 의미하는 것이 무엇인지 잘 모르고 있으며, 검색을 통해 그것을 해결할 수 없었습니다.중첩 루프 AttributeError : 파일을 열 때 __exit__ (Selenium 스크립트)

이 문제를 해결하는 데 도움이 될 경우 많은 도움이 될 것입니다.

코드 :

with open('test2.txt').read() as lp: 
        current = 1 
        for line in lp: 
         field_box.send_keys("""ID:""", lp) 
         driver.find_element_by_css_selector('.form-buttons').submit() 
         time.sleep(2) 

전체 코드 :

import time 
from selenium import webdriver 

def doAction(): 
    driver = webdriver.Chrome ('/Users/xxx/chromedriver') # Set correct path for chromedriver: https://sites.google.com/a/chromium.org/chromedriver/downloads 
    driver.get('https://www.site.com.au/login'); # Set which region you're working with 
    time.sleep(1) 
    search_box = driver.find_element_by_name('username') 
    search_box.send_keys('xxx') # Set your e-mail/username 
    search_box = driver.find_element_by_name('password') 
    search_box.send_keys('xxx') # Set your password 
    driver.find_element_by_css_selector('.btn.btn-primary.btn-md.btn-cm.pull-right').click() 
    time.sleep(2) 
    with open('test.txt') as fp: 
     print '============================================' 
     print 'Starting to disable entities................' 
     print '============================================' 
     current = 1 
     for line in fp: 
      url = 'https://www.site.com.au/admin/entities/%s' % line 
      driver.get(url); 
      time.sleep(3) 
      driver.find_element_by_css_selector("input[type='radio'][value='false']").click() 
      field_box_clear = driver.find_element_by_name('disabledReason').clear() 
      field_box = driver.find_element_by_name('disabledReason') 
      with open('test2.txt').read() as lp: 
       current = 1 
       for line in lp: 
        field_box.send_keys("""ID:""", lp) 
        driver.find_element_by_css_selector('.form-buttons').submit() 
        time.sleep(2) 

      print "Doing",current,"Of",file_len('test.txt') 
      current += 1 
      print '- Disabled entity: %s' % line 
     print '============================================' 
     print 'Completed disabling entities................' 
     print '============================================' 

def file_len(fname): 
    with open(fname) as f: 
     for i, l in enumerate(f): 
      pass 
    return i + 1 

if __name__ == "__main__": 
    doAction() 

답변

1

문제는 당신이 withstatementopen('test2.txt').read()을 포장하려고하는 것입니다.

To implement a context manager, we define a class containing an enter and exit method.

open('test2.txt').read()의 결과는이를 구현하지 않습니다. 대신에 open('test2.txt')을 감싸 야합니다 (파일을 자동으로 닫으려면).

with open('test2.txt') as lp: 
    current = 1 
    ... 
관련 문제