其他方式填充文本字段,而不是send_keys

时间:2019-01-31 13:16:01

标签: python selenium

因此,我已经去了一些在线论坛,但似乎没有任何效果。我正在尝试填写网站上的信用卡字段,但是当我使用时:

send_keys()

它扰乱数字。有什么方法可以像自动完成一样填充文本框吗?只需一次发送整个字符串:

iframe = driver.find_element_by_xpath("//iframe[@name='__privateStripeFrame4']")
driver.switch_to.frame(iframe)
credit_card_text.click()
credit_card_text.send_keys(credit_card)
driver.switch_to.default_content() 

1 个答案:

答案 0 :(得分:0)

您应该使用WebDriverWait

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://example.com")
iframe = driver.find_element_by_xpath("//iframe[@name='__privateStripeFrame4']")
driver.switch_to.frame(iframe)
credit_card = 12345678754325
credit_card_text = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="root"]/form/span[2]/label/input')))
credit_card_text.click()
credit_card_text.send_keys(credit_card)

如果它不起作用,您可以尝试使用execute_script

iframe = driver.find_element_by_xpath("//iframe[@name='__privateStripeFrame4']")
driver.switch_to.frame(iframe)
credit_card = 12345678754325
credit_card_text = driver.find_element_by_xpath(' //*[@id="root"]/form/span[2]/label/input')
driver.execute_script("arguments[0].setAttribute('value', '" + credit_card+"')", credit_card_text)
driver.switch_to.default_content()

希望这会有所帮助!