Javascript 如何使用Seleniumv3和Python3单击X图标关闭iframe
我在关闭iframe弹出窗口时遇到困难 使用python3 当我尝试检查浏览器中的代码时,它看起来像链接在Javascript 如何使用Seleniumv3和Python3单击X图标关闭iframe,javascript,python-3.x,selenium,selenium-chromedriver,webdriverwait,Javascript,Python 3.x,Selenium,Selenium Chromedriver,Webdriverwait,我在关闭iframe弹出窗口时遇到困难 使用python3 当我尝试检查浏览器中的代码时,它看起来像链接在标记内,而该标记内没有href。我的猜测是,这是一个javascript链接,而我根本不是一个喜欢javascript的人 我在谷歌上找不到任何东西,因为谷歌上出现的每种情况似乎都包括一个按钮或href标签 由于这是一个实时网站,我不分享html代码,但如果你需要它,请让我知道。 我对Selenium是个新手,如有任何帮助,我将不胜感激。 提前感谢。下面的代码等待帧并切换到它,然后单击关
标记内,而该标记内没有href
。我的猜测是,这是一个javascript链接,而我根本不是一个喜欢javascript的人
我在谷歌上找不到任何东西,因为谷歌上出现的每种情况似乎都包括一个按钮或href
标签
由于这是一个实时网站,我不分享html代码,但如果你需要它,请让我知道。
我对Selenium是个新手,如有任何帮助,我将不胜感激。
提前感谢。下面的代码等待帧并切换到它,然后单击关闭按钮并切换回主帧。如果查找选择器有问题,请参阅我使用的选择器
WebDriverWait(driver, 10)
.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe.sp-fancybox-iframe")))
driver.find_element_by_css_selector("i.element-close-button").click()
driver.switch_to.default_content()
最可能的情况是,您必须编写自定义处理程序,以便能够跳过第一次打开网站时出现的不同类型的弹出窗口。例如,如果出现任何其他类型的弹出窗口,您可以将代码放在上面,以尝试/捕获能够跳过而不会出错。根据您共享给
的url单击()
在X图标上,您必须诱导WebDriverWait以使框架可用并切换到它,然后再次诱导WebDriverWait以使所需元素可单击,您可以使用以下解决方案:
- 代码块:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_argument('disable-infobars') driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe') driver.get("https://www.kariyer.net/") # xpath WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='sp-fancybox-iframe adaptive-resolution']"))) # css_selector # WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.sp-fancybox-iframe.adaptive-resolution"))) # xpath WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='element-content']/i[@class='fa fa-times element-close-button']"))).click() # css_selector # WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.element-content > i.fa.fa-times.element-close-button"))).click()
- 浏览器快照:
那么您是否先切换到iframe?(例如,driver.switchTo().frame(“元素的id”))是的,我切换到了iframe。我的问题是,在HTML code.Python中找不到关闭iframe的链接。您需要导入:
来自selenium.webdriver.common.by import by
,来自selenium.webdriver.support.ui导入WebDriverWait
,来自selenium.webdriver.support导入预期条件,因为EC
我将可执行路径更改为my/usr/,并且它可以工作。这正是我想要的。非常感谢。出于好奇,如果你不介意我问的话,我们能在没有xpath的情况下完成吗?@user611811检查我的更新答案,让我知道statusWorks很棒。返回默认内容时遇到问题。我不应该使用驱动程序返回默认内容。切换到.default\u content()
?还是我遗漏了什么?顺便说一下,我在登录时正在使用您的解决方案。