更改为 iframe

Change to iframe

在 gmx.net 我想点击电子邮件中的超链接。

但是超链接包含在两个 iframe 中。

如何换成它?

我的做法:

WebDriverWait(driver, 10).until(expected_conditions.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@class="app-stack_children--active"]')))

WebDriverWait(driver, 10).until(expected_conditions.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@class="js-box-flex need-overlay"]')))

正如我所怀疑的,您的 XPath 不正确。

您必须使用

WebDriverWait(driver, 10).until(expected_conditions.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@class='app-stack__children l-vertical app-stack__children--active']')))

WebDriverWait(driver, 10).until(expected_conditions.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[contains(@class, 'app-stack_children--active']')))

显然,第一个选项比第二个选项好。 contains() 总是有可能匹配多个元素。如果使用相等,则可能性较小。