Ответ Андраса Дика идеален.Я вкладываю свой ответ просто в надежде понять вашу проблему (и вопрос) еще лучше.Глядя на ваши функции, кажется, вам нужно, чтобы один элемент, полученный с помощью
driver.find_element_by_css_selector
, отправлял строку в текстовое поле
, если вам просто нужно отправить другую строку вОЧЕНЬ ЖЕ текстовое поле (мне кажется, что вы указываете на один и тот же элемент в двух примерах, которые вы прикрепили), тогда вам НЕ нужно использовать много функций, в точности как сказал Андрас.
просто используйтецикл for:
def t17():
Clientbox = 'body > table:nth-child(6) > tbody > tr > td:nth-child(2) > form
> table > tbody > tr:nth-child(1) > td:nth-child(1) > table > tbody >
tr:nth-child(7) > td:nth-child(3) > table > tbody > tr:nth-child(1) >
td:nth-child(2) > select'
Clientname = driver.find_element_by_css_selector(Clientbox)
# example list:
key_list = ["Southern", "Star"]
for key in key_list:
Clientname.send_keys(key)
Конечно, если вам это нужно, не забудьте также отправить клавишу ВВОДА:
# this at top of the file:
from selenium.webdriver.common.keys import Keys
# in yout function:
Clientname.send_keys(Keys.ENTER))
И если вам нужно подождать перезагрузки страницы, затем также используйте метод Wait из библиотеки Selenium:
from selenium.webdriver.support import wait as Wait
from selenium.common.exceptions import TimeoutException
try:
Wait(driver, 10).until(lambda driver: driver.find_element_by_css_selector(Clientbox).is_displayed())
except TimeoutException as e:
print("here handle your exception", e)
Это будет ждать максимум 10 секунд (вы, конечно, можете настроить его!), затем он выдаст исключение TimeoutException, давая понять, что элементВы хотите (или даже всю страницу) не было загружено
Надеюсь, я понял смысл вашего вопроса, и это поможет.
Если вам абсолютно необходимо вызывать функции с помощьюномер (или выбранное имя), то выМожно попробовать использовать словарь, который предлагает больше контроля, чем список, если вам не нужно каждый раз зацикливать все перечисленные элементы:
def d1():
return "it's d1"
def d2():
return "it's d2"
def d3():
return "it's d3"
def d4():
return "it's d4"
def fun_switcher(num):
switcher = {1: d1, 2: d2, 3: d3}
return switcher.get(num, lambda: "fun address error")
# execution example:
if __name__ == "__main__":
num = 2
result = fun_switcher(num)
# remember to call the function, or you will get the function_object as result!
print(result())