簡體   English   中英

如何為python函數定義send_keys?

[英]How can I define send_keys for python function?

我需要關於如何為用戶輸入調用 send_keys 的建議。 如果我為self.browser.find_elements_by_id ("Login1_UserName")行分配一個變量,然后將其發送到 send_keys,則該解決方案不起作用。 我究竟做錯了什么?

 def login(Self):
     # login to the app
     username = self.browser.find_elements_by_id ("Login1_UserName")
     username.send_keys ("userone")

find_elements_*將返回一個List並且您不能在List上調用send_keys() 所以,你需要更換find_elements_*find_element_*您可以使用下面的定位策略

def login(Self):
    # login to the app
    self.browser.find_element_by_id("Login1_UserName").send_keys("userone")

根據最佳實踐,在調用send_keys()您需要為element_to_be_clickable()引入WebDriverWait ,您可以使用以下任一解決方案:

  • 使用ID

     WebDriverWait(self.browser, 20).until(EC.element_to_be_clickable((By.ID, "Login1_UserName"))).send_keys("Tomasito")
  • 使用CSS_SELECTOR

     WebDriverWait(self.browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#Login1_UserName"))).send_keys("Tomasito")
  • 使用XPATH

     WebDriverWait(self.browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='Login1_UserName']"))).send_keys("Tomasito")
  • 注意:您必須添加以下導入:

     from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

這是因為您使用了find_elements_by_id("Login1_UserName")它將返回列表而不是元素。您應該使用find_element_by_id("Login1_UserName")

def login(Self):
     # login to the app
     username = self.browser.find_element_by_id("Login1_UserName")
     username.send_keys("userone")

試試這個代碼看看這是否有效。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver=webdriver.Chrome("path of chrome driver")
driver.get('url')
username=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.ID,'Login1_UserName')))
username.send_keys("userone")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM