我正在运行一个测试用例,其中一部分是检查iframe
中的元素是否可见
我已经完成了以下操作,但是它不起作用,并且总是转到except块。谢谢
try:
time.sleep(2)
driver.switch_to.frame("iframe-xxxxxxxxxxxxxxxxxx")
time.sleep(2)
if driver.find_element_by_xpath("//div[@class='col-11 answer-feedback-label']//div[contains(text(),'Hello World!')]"):
logging.info("Success")
except:
logging.error("Failure")
答案 0 :(得分:0)
要检查<iframe>
中的某个元素是否可见,因为所需元素位于<iframe>
中,因此您必须:
frame_to_be_available_and_switch_to_it()
诱导 WebDriverWait 。visibility_of_element_located()
生成 WebDriverWait 。您可以使用以下解决方案:
代码块:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import org.openqa.selenium.TimeoutException;
.
.
.
try:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"iframe_XPATH")))
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='col-11 answer-feedback-label']//div[contains(text(),'Hello World!')]")))
logging.info("Success")
except TimeoutEception:
logging.error("Failure")
在这里您可以找到有关Ways to deal with #document under iframe的相关讨论