将值输入 iframe python selenium shopify 付款
Entering values into iframe python selenium shopify payments
我正在尝试使用 selenium + python 将信用卡值输入 Shopify 网站。输入卡值的框在 iframe 中,我不确定如何切换到此 iframe。
我目前有这个代码:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,
'//*[@id="card-fields-number-950kvfi9pbn00000"]'))
).send_keys(card_number, Keys.TAB, name_on_card, Keys.TAB,expiry_date, cvv)
driver.switch_to.default_content()
但是这个returns错误:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(...
selenium.common.exceptions.TimeoutException: Message:
如此有效,找不到元素...
这是页面的HTML:
(https://gyazo.com/80d9d3c941c62ededc81d5fbc327a71f)
我想获得有关如何访问此元素的一些帮助,我还尝试通过将 id 更改为此标签的父元素来访问它。我还添加了一个 time.sleep(20)
,这样我就可以确定页面已完全加载,但我仍然遇到同样的错误。
您可以使用 switch_to_frame
方法切换到 iframe。
iframe = driver.find_element(By.XPATH, '//*[@id="card-fields-number-950kvfi9pbn00000"]')
driver.switch_to_frame(iframe)
#You're now 'in' the iframe
你应该试试
driver.switch_to_frame("Insert 'Name'of Iframe here")
,然后找到你的元素。找到元素后。你可以试试:
ELEMENT.send_keys(card_number, Keys.TAB, name_on_card, Keys.TAB,expiry_date, cvv)
driver.switch_to.default_content()
但我建议搜索每个元素而不是使用 Tab 键。由于网站可以随时更改,因此将来更容易修复或调整。本质上,您可以使用 if 语句来检测字段,如果存在,则填写它们。
问题是元素的名称和 ID 是动态的,并且会针对每个唯一的结帐而变化window这是一个有效的代码:
iframe = driver.find_element_by_class_name('card-fields-iframe')
driver.switch_to.frame(iframe)
driver.find_element_by_name('number').send_keys(card_number, Keys.TAB,name_on_card,Keys.TAB,expiry_date,Keys.TAB, cvv)
driver.switch_to.default_content()
我正在尝试使用 selenium + python 将信用卡值输入 Shopify 网站。输入卡值的框在 iframe 中,我不确定如何切换到此 iframe。
我目前有这个代码:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,
'//*[@id="card-fields-number-950kvfi9pbn00000"]'))
).send_keys(card_number, Keys.TAB, name_on_card, Keys.TAB,expiry_date, cvv)
driver.switch_to.default_content()
但是这个returns错误:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(...
selenium.common.exceptions.TimeoutException: Message:
如此有效,找不到元素...
这是页面的HTML: (https://gyazo.com/80d9d3c941c62ededc81d5fbc327a71f)
我想获得有关如何访问此元素的一些帮助,我还尝试通过将 id 更改为此标签的父元素来访问它。我还添加了一个 time.sleep(20)
,这样我就可以确定页面已完全加载,但我仍然遇到同样的错误。
您可以使用 switch_to_frame
方法切换到 iframe。
iframe = driver.find_element(By.XPATH, '//*[@id="card-fields-number-950kvfi9pbn00000"]')
driver.switch_to_frame(iframe)
#You're now 'in' the iframe
你应该试试
driver.switch_to_frame("Insert 'Name'of Iframe here")
,然后找到你的元素。找到元素后。你可以试试:
ELEMENT.send_keys(card_number, Keys.TAB, name_on_card, Keys.TAB,expiry_date, cvv)
driver.switch_to.default_content()
但我建议搜索每个元素而不是使用 Tab 键。由于网站可以随时更改,因此将来更容易修复或调整。本质上,您可以使用 if 语句来检测字段,如果存在,则填写它们。
问题是元素的名称和 ID 是动态的,并且会针对每个唯一的结帐而变化window这是一个有效的代码:
iframe = driver.find_element_by_class_name('card-fields-iframe')
driver.switch_to.frame(iframe)
driver.find_element_by_name('number').send_keys(card_number, Keys.TAB,name_on_card,Keys.TAB,expiry_date,Keys.TAB, cvv)
driver.switch_to.default_content()