我可以点击元素,但不能在它上发送键(python-selenium)



我可以点击元素,但不能在以下付款形式中发送密钥(python selenium(:

card_exiry = WebDriverWait(self.driver, 50)
card_exiry.until(EC.presence_of_element_located((By.XPATH, "//span[@data-cse='encryptedExpiryDate']"))).click()
time.sleep(2)
card_exiry.until(EC.presence_of_element_located((By.XPATH, "//input[@id='encryptedCardNumber']"))).send_keys('3023')

这是HTML代码:

<input class="js-iframe-input input-field" id="encryptedExpiryDate" type="tel" maxlength="5" autocomplete="cc-exp" placeholder="MM/AA" aria-label="Default aria expiry date label" aria-invalid="true" aria-required="true" aria-describedby="ariaErrorField" data-type="gsf" style="display: block;">

尝试从下面的代码-中获得帮助

# Import
from selenium.webdriver import ActionChains
action = ActionChains(driver)
Elem_Send_Key = card_exiry.until(EC.presence_of_element_located((By.XPATH, "//input[@id='encryptedCardNumber']")))
action.move_to_element(Elem_Send_Key).click().send_keys("XYZ").perform()

首先,在HTML代码中,元素的id为encryptedExpiryDate,但在定位器中,您定义了//input[@id='encryptedCardNumber']

第二,尝试将.presence_of_element_located更改为.element_to_be_clickable

试试这个:

card_exiry.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='encryptedExpiryDate']"))).send_keys('3023')

受此代码影响:

def type_order_credit_card1_information(self):
# Enter the credit card number
IwebElement_Element = self.driver.find_element_by_xpath('//iframe[1]')
self.driver.switch_to.frame(IwebElement_Element)
test = WebDriverWait(self.driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "//input[@id='encryptedCardNumber']")))
test.send_keys(credit_card1_number)
self.driver.switch_to.parent_frame() # To switch to the parent frame
# Enter the credit card expiry date
IwebElement_Element2 = self.driver.find_element_by_xpath('//*[@id="adyen-card-container"]/div/div/div[2]/div/div[2]/div[1]/label/span[2]/span/iframe')
self.driver.switch_to.frame(IwebElement_Element2)
test = WebDriverWait(self.driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "//input[@id='encryptedExpiryDate']")))
test.send_keys(credit_card1_expiry_date)
self.driver.switch_to.parent_frame()  # To switch to the parent frame
# Enter the credit card cvv security number
IwebElement_Element3 = self.driver.find_element_by_xpath(
'//*[@id="adyen-card-container"]/div/div/div[2]/div/div[2]/div[2]/label/span[2]/span/iframe')
self.driver.switch_to.frame(IwebElement_Element3)
test = WebDriverWait(self.driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "//input[@id='encryptedSecurityCode']")))
test.send_keys(credit_card1_cvv_number)
self.driver.switch_to.parent_frame()  # To switch to the parent frame

最新更新