selenium 在IFRAME内的IFRAME上定位元素

ttcibm8c  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(208)

嗨,我需要一些帮助来定位一个iframe上的按钮,我认为这是在另一个iframe内。我试了所有我能找到的东西,但没有成功。我不能复制-粘贴整个代码,但已经附上了解释树的截图。

kq4fsx7k

kq4fsx7k1#

请尝试这个:

driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR, "iframe.swg-dialog"))
driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR, "iframe[src*='publicatioId=barpage.com']"))
driver.find_element(By.CSS_SELECTOR, div[data-test-id='close-button']).click()

当您使用完iframe中的元素时,不要忘记使用切换回默认内容

driver.switch_to.default_content()

如果您更喜欢使用XPath而不是CSS选择器,则可以很容易地将上面的代码转换为XPath表达式

driver.switch_to.frame(driver.find_element(By.XPATH, "//iframe[contains(@class,'swg-dialog')]"))
driver.switch_to.frame(driver.find_element(By.XPATH, "//iframe[contains(@src,'publicatioId=barpage.com')]"))
driver.find_element(By.XPATH, //div[@data-test-id='close-button']).click()

您可能需要添加等待,直到元素可用,等等。

xxls0lw8

xxls0lw82#

试着进入第一个IFRAME,然后进入第二个。
试试这个代码

iframe = navegador.find_element_by_xpath("XpathOf1frame")    
navegador.switch_to.frame(iframe)
iframe2 = navegador.find_element_by_xpath("XpathOf2frame")    
navegador.switch_to.frame(iframe2)
navegador.find_element_by_xpath('XpathOfButton').click()

相关问题