提问者:小点点

无法使用Selenium切换到iFrame


我目前正在试用SeleniumPython做一些网络自动化。我卡住了结帐,你必须输入你的信用卡数据。我知道我必须切换到iFrame才能找到输入框。但是我从来没有能够切换框架。我尝试了ID或例如:

time.sleep(4)
frame = self.driver.find_element_by_xpath("//iframe[@name= '__privateHeidelpayFrame--heidelpay-holder-iframe-1616489954834']")
self.driver.switch_to.frame(frame)
name_input = self.driver.find_element_by_id("card-holder")
name_input.clear()
name_input.send_keys(credit_card.NAME)

我总是得到无法定位元素:{"method":"xpath","selector":"//iframe[@name='__privateHeidelpayFrame--heidelpay-holder-iframe-1616489954834']"}".

我从源代码中添加了一张图片。网页中的源代码

我很感谢你的建议!最好的,詹尼克


共2个答案

匿名用户

可能是身份证

尝试使用starst-with()或使用其他属性(如class)来标识iframe。

frame = self.driver.find_element_by_xpath("//iframe[starts-with(@name, '__privateHeidelpayFrame--heidelpay-holder-iframe-')]")
self.driver.switch_to.frame(frame)

frame = self.driver.find_element_by_xpath("//iframe[@class='heidelpayUIIframe']")
self.driver.switch_to.frame(frame)

匿名用户

您是否尝试过使用更简单的API来查找iFrame?

是否

self.driver.find_element(By.NAME, "__privateHeidelpayFrame--heidelpay-holder-iframe-1616489954834'")

还什么吗?