Python Selenium - Iframe 动态更改 Id 和名称但 Src 相同
Python Selenium - Iframe Dynamically Change Id and Name But Src is Same
问题:- 无法检测到 iframe 并切换到 iframe,因为 iframe id 和名称在每次加载时动态变化,但 src 保持不变。
也无法识别 xpath。使用 driver.find_element_by_tagname("iframe")
找到 iframe 标记,但无法在页面源的 HTML 中查看标记 <iframe>
。因此无法通过右键单击和 iframe 标记找到 xpath。
已经尝试使用 'frame.size' 查找帧大小的数量,但由于它不可调用,它在字典中提供答案 'height:0,weight:0'
需要切换到此 iframe 并使用 iframe 内的元素
1) 在 iframe 中输入文本字段
2) select iframe 中的单选按钮
切换到 iframe 后无法 select 元素
代码截图
enter image description here
默认情况下,每一帧都分配一个整数。所以你总是可以这样做:
driver.switchTo().frame(0)
或
driver.switchTo().frame(1)
您可以等到框架加载如下。
wait = WebDriverWait(driver, 300)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//iframe')))
我能够通过确定 iframe 的数量来回答这个问题。我使用了 'find_element's'_by_tagname('iframe') 而不是 find_element_bytagname('iframe') ,它能够找到超过 1 个 iframe 如果存在于页面源中。
这为我提供了总共 3 个 iframe 标记。然后我继续循环进入 iframe 并找到每个 iframe 的属性,例如 id、name 和 src。
然后我注意到其中一个 iframe src,指的是具有我正在寻找的元素的网址。然后我继续使用 if 语句切换到那个特定的框架。
切换到 iframe 后,我继续获取元素。
这解决了如何使用 python-selenium 在框架之间切换以及在切换框架时检测元素。
这里的关键是检测元素在哪个框架上,并能够切换到那个框架。该框架可以嵌套在一个框架内,也可以嵌套在主 window 中的框架列表中。
检测到并切换帧。然后就可以定位元素了。
这解决了挑战
问题:- 无法检测到 iframe 并切换到 iframe,因为 iframe id 和名称在每次加载时动态变化,但 src 保持不变。
也无法识别 xpath。使用 driver.find_element_by_tagname("iframe")
找到 iframe 标记,但无法在页面源的 HTML 中查看标记 <iframe>
。因此无法通过右键单击和 iframe 标记找到 xpath。
已经尝试使用 'frame.size' 查找帧大小的数量,但由于它不可调用,它在字典中提供答案 'height:0,weight:0'
需要切换到此 iframe 并使用 iframe 内的元素
1) 在 iframe 中输入文本字段
2) select iframe 中的单选按钮
切换到 iframe 后无法 select 元素
代码截图 enter image description here
默认情况下,每一帧都分配一个整数。所以你总是可以这样做:
driver.switchTo().frame(0)
或
driver.switchTo().frame(1)
您可以等到框架加载如下。
wait = WebDriverWait(driver, 300)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//iframe')))
我能够通过确定 iframe 的数量来回答这个问题。我使用了 'find_element's'_by_tagname('iframe') 而不是 find_element_bytagname('iframe') ,它能够找到超过 1 个 iframe 如果存在于页面源中。
这为我提供了总共 3 个 iframe 标记。然后我继续循环进入 iframe 并找到每个 iframe 的属性,例如 id、name 和 src。
然后我注意到其中一个 iframe src,指的是具有我正在寻找的元素的网址。然后我继续使用 if 语句切换到那个特定的框架。
切换到 iframe 后,我继续获取元素。
这解决了如何使用 python-selenium 在框架之间切换以及在切换框架时检测元素。
这里的关键是检测元素在哪个框架上,并能够切换到那个框架。该框架可以嵌套在一个框架内,也可以嵌套在主 window 中的框架列表中。
检测到并切换帧。然后就可以定位元素了。 这解决了挑战