2017-01-28 3 views
1

send_keysのメッセージボックスに変数を渡すためにループ内でループを実行しようとしています。変数に渡したい情報がある2番目のファイル "test2.txt"を開いたときにエラーが発生したようです。私はPythonにはあまり新しく、その意味が完全にわからず、検索で解決できませんでした。ネストループ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 
    ... 
関連する問題