Python 无法将焦点恢复到主窗口并单击“断开连接”按钮
我有下面的代码 返回主窗口后,无法获得焦点,未单击“断开连接”按钮Python 无法将焦点恢复到主窗口并单击“断开连接”按钮,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我有下面的代码 返回主窗口后,无法获得焦点,未单击“断开连接”按钮 parent_handle = driver.window_handles[0] #clicks on link driver.find_element_by_xpath("//*[@id='content']/div[4]/div/p/a").click() child_handle = [x for x in driver.window_handles if x != parent_handle][0] driver.
parent_handle = driver.window_handles[0]
#clicks on link
driver.find_element_by_xpath("//*[@id='content']/div[4]/div/p/a").click()
child_handle = [x for x in driver.window_handles if x != parent_handle][0]
driver.switch_to.window(child_handle)
time.sleep(2)
#will work on this winow
driver.close()
driver.switch_to.window(parent_handle)
time.sleep(30)
#click on Disconnect button on toolbar on main window
driver.find_element_by_xpath("//a[contains(text(), 'btn btn-outline-dark et-disconnect-link et-disconnect-warning-link')]").click()
我尝试了几种方法,但得到了下面的错误
selenium.common.exceptions.NoSuchElementException: Message: no such element:
Unable to locate element: {"method":"xpath","selector":"//a[contains(text(), 'btn btn-outline-dark et-disconnect-link et-disconnect-warning-link')]"}
(Session info: chrome=79.0.3945.117)
您没有发布html,但是
xpath
看起来像类,而不是文本
driver.find_element_by_xpath("//a[@class='btn btn-outline-dark et-disconnect-link et-disconnect-warning-link')]").click()
或通过css\u选择器
driver.find_element_by_css_selector(".btn.btn-outline-dark.et-disconnect-link.et-disconnect-warning-link").click()
您还应该使用显式等待,而不是time.sleep(30)
看来你就快到了。你需要考虑以下几点:
- 假设最初只有一个
打开,而不是窗口句柄
您可以使用父窗口句柄=驱动程序。窗口句柄[0]
驱动程序。当前窗口句柄
- 通过
关闭子窗口后,可以使用driver.close()
切换到.default\u content()
似乎是btn btn轮廓暗et断开连接et断开警告链接
属性的值类
- 由于您的用例是调用
,您必须将click()
,并且您可以使用以下选项:元素的WebDriverWait设置为可单击()
- 使用
:CSS\u选择器
parent_handle = driver.current_window_handle #clicks on link driver.find_element_by_xpath("//*[@id='content']/div[4]/div/p/a").click() child_handle = [x for x in driver.window_handles if x != parent_handle][0] driver.switch_to.window(child_handle) #will work on this winow driver.close() driver.switch_to.window(parent_handle) #click on Disconnect button on toolbar on main window WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn.btn-outline-dark..et-disconnect-link.et-disconnect-warning-link"))).click()
- 使用
:XPATH
parent_handle = driver.current_window_handle #clicks on link driver.find_element_by_xpath("//*[@id='content']/div[4]/div/p/a").click() child_handle = [x for x in driver.window_handles if x != parent_handle][0] driver.switch_to.window(child_handle) #will work on this winow driver.close() driver.switch_to.window(parent_handle) #click on Disconnect button on toolbar on main window WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='btn btn-outline-dark et-disconnect-link et-disconnect-warning-link']"))).click()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
- 使用
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC