<p>安德拉斯·迪克的答案是完美的。
我写下我的答案只是希望能更好地理解你的问题。
看看你的函数,似乎你需要,对于一个元素</p>
<pre><code>driver.find_element_by_css_selector
</code></pre>
<p>将字符串发送到文本框中</p>
<p>如果您只需要将不同的字符串发送到同一个文本框中(在我看来,您指向所附的两个示例fun中的同一个元素),那么您不需要使用许多函数,正如Andras所说的那样。你知道吗</p>
<p>只需使用for循环:</p>
<pre><code>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)
</code></pre>
<p>当然,如果您需要,请不要忘记同时发送ENTER键:</p>
<pre><code># this at top of the file:
from selenium.webdriver.common.keys import Keys
# in yout function:
Clientname.send_keys(Keys.ENTER))
</code></pre>
<p>如果您需要等待页面重新加载,那么也可以使用Selenium库中的wait方法:</p>
<pre><code>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)
</code></pre>
<p>这将等待最多10秒(您当然可以自定义它!)然后它会抛出一个TimeoutException,表明您想要的元素(甚至整个页面)尚未加载</p>
<p>我希望我能理解你的问题,这会有所帮助。你知道吗</p>
<hr/>
<p>如果您确实需要通过数字(或选择名称)调用函数,那么您可以尝试使用字典,它提供了比列表更多的控制,如果您不需要每次都循环整个列出的项:</p>
<pre><code>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())
</code></pre>