Python выводит весь текстовый файл, а не построчно - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь выводить данные из текстового файла построчно в окно поиска на веб-сайте.Я использую Selenium для взаимодействия с веб-страницей.

Однако, когда мой код записывает текстовое поле на веб-странице, он вставляет все содержимое текстового файла, а не первую строку, загружает страницу, затем ищет вторую строку и так далее, и так далее.четвертый ..... см. ниже мой код:

with open("SerialNumbers.txt") as sn:
    for line in sn:
        search_field = driver.find_element_by_id('criteria[1][1]')
        search_field.click()
        serials = sn.read().splitlines()
        search_field.send_keys(serials)
        search_field.send_keys(Keys.ENTER)

При отправке первой строки моего текстового файла (сериалы) в поле поиска он начинает записывать все содержимое SerialNumbers.txt

Пожалуйста, сообщите, где я ошибаюсь, если возможно, поскольку я уверен, что определение моей переменной как sn.read (). Splitlines () должно указывать python читать строку за строкой из списка

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Глядя на ваш код, вы уже просматриваете строки файла из-за for line in sn:. Однако serials = sn.read().splitlines() заставляет serials содержать список строк в вашем файле . Поскольку send_keys может принимать список ключей для отправки, просто отправляет все данные в файле . Если вы хотите найти одну строку, затем следующую и т. Д., То Я рекомендую просто вставить line в ваш первый send_keys примерно так:

with open("SerialNumbers.txt") as sn:
    for line in sn:
        search_field = driver.find_element_by_id('criteria[1][1]')
        search_field.click()
        search_field.send_keys(line)
        search_field.send_keys(Keys.ENTER)

Вам может понадобиться обрезать окончания строк, поскольку каждая строка, скорее всего, будет содержать символ \n. Вы можете сделать это с помощью str.rstrip(), который удалит все завершающие пробельные символы, если это не помешает вашему поиску.

В качестве альтернативы, вы можете сделать sn.read().splitlines() и выполнить итерации по следующим параметрам:

with open("SerialNumbers.txt") as sn:
    serials = sn.read().splitlines()
    for serial in serials:
        search_field = driver.find_element_by_id('criteria[1][1]')
        search_field.click()
        search_field.send_keys(serial)
        search_field.send_keys(Keys.ENTER)
0 голосов
/ 11 марта 2019

Возможно, измените чтение файла следующим образом:

with open(r'c:\Users\xf01145\Downloads\scores.txt') as file:
    lines = file.readlines()
    for line in lines:
        print(line, end='')
...