Пытаетесь напечатать текст из WebElements в той же строке, когда этот текст был собран с помощью циклов for? - PullRequest
0 голосов
/ 27 мая 2020

По отдельности prints в моих циклах for правильно печатает элементы, которые я хочу, но у меня возникают трудности с печатью их вместе в одной строке.


#Grabbing text from the first column in the table that contains "Elephant"

for cell in driver.find_elements_by_xpath("//*[contains(text(),'Elephant')]"):
    ElepantText = cell.text
    print(ElephantText)

#This prints:
#Elephant 1
#Elephant 2
#Elephant 3 etc...which is what I want

for element in driver.find_elements_by_xpath("//[contains(text(),'Elephant')]/following::td[1]/span/select[1]"):
    selected = Select(element).first_selected_option
    select_text = selected.text
    print(select_text)


#This acquires the selected option in the dropdown menu following the cell that contains "Elephant" and prints the selected option which is what I want.

Я пробовал:

print(ElephantText, select_text)

Но это просто возвращает последнее значение в ElephantText и ни один из параметров select_text Selected.

Я также пытался соединить их вместе, используя:

zipped = zip(ElephantText, select_text)
print(zipped)

Но он возвращает это :

<zip object at 'random hexadecimal number'>

Я снова попытался превратить их в списки, но он просто превратил каждую букву в результате в элемент в списке, так что на данный момент у меня нет идей. Приветствуется любое направление.

РЕДАКТИРОВАТЬ

Вот как я хотел бы, чтобы мои результаты выглядели так:

Elephant 1 - Selected

Слон 2 - Выбрано

Слон 3 - Выбрано

1 Ответ

1 голос
/ 27 мая 2020

ElephantText и selected_text являются строками. Вы не можете их застегнуть. Вам нужно сохранить все текстовые значения (если вы повторяете коллекции одну за другой), а затем заархивировать список текстовых значений:

ElephantTexts = []

for cell in driver.find_elements_by_xpath("//*[contains(text(),'Elephant')]"):
    ElephantText = cell.text
    print(ElephantText)
    ElephantTexts.append(EelephantText)


Selected_texts = []

for element in driver.find_elements_by_xpath("//[contains(text(),'Elephant')]/following::td[1]/span/select[1]"):
    selected = Select(element).first_selected_option
    select_text = selected.text
    print(select_text)
    Selected_texts.append(selected_text)

merged = tuple(zip(ElephantTexts, Selected_texts))    # assuming they are the same size
for tup in merged:
    print(tup)

Я выполнил следующий код с жестко закодированными списками:

ElephantTexts = ['Elephant1', 'Elephant2', 'Elephant3']
Selected_texts = ['Selected1', 'Selected2', 'Selected3']
merged = tuple(zip(ElephantTexts, Selected_texts))    # assuming they are the same size
for tup in merged:
    print(tup)

, и это результат:

('Elephant1', 'Selected1')
('Elephant2', 'Selected2')
('Elephant3', 'Selected3')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...