亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我嘗試使用切換到窗口來查找和處理元素時,會顯示元素未找到錯誤

當我嘗試使用切換到窗口來查找和處理元素時,會顯示元素未找到錯誤

互換的青春 2022-10-25 15:50:42
from selenium import webdriver from selenium.webdriver.common.by import 按導入時間類 SwtWin():def swwn(self):    driver=webdriver.Firefox()    driver.get("https://learn.letskodeit.com/p/practice")    driver.implicitly_wait(2)    ParentWin=driver.current_window_handle    print(ParentWin)    driver.find_element_by_id("openwindow").click()    windows=driver.window_handles    print(windows)    for Tab in windows:          print(Tab)          if Tab != ParentWin:             print("Switched to sub window")             driver.switch_to.window(Tab)             print(Tab)             sel=driver.find_element_by_partial_link_text("Login")             sel.click()             driver.close()             break    driver.switch_to.window(ParentWin)    driver.execute_script("window.scrollBy(0, 1000);")    driver.quit()SwtWin().swwn()
查看完整描述

1 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

如果在元素出現在頁面上之前運行元素搜索,則無法找到該元素。


在給定的代碼中,當driver.find_element_by_id("openwindow").click()被執行時,它會打開一個新頁面并且sel=driver.find_element_by_partial_link_text("Login")由于元素未呈現(網絡問題、筆記本電腦速度慢等)而失敗。


在這種情況下,標準解決方案是使用WebDriverWaitclass 來等待元素的狀態,并且只有在出現所需狀態(例如,頁面上存在元素)時,才能繼續執行。


這是示例


from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions

from selenium.webdriver.support.wait import WebDriverWait


driver = webdriver.Firefox()

driver.get("https://learn.letskodeit.com/p/practice")

driver.implicitly_wait(2)

ParentWin = driver.current_window_handle

print(ParentWin)

driver.find_element_by_id("openwindow").click()

windows = driver.window_handles

print(windows)

for Tab in windows:

    print(Tab)

    if Tab != ParentWin:

        print("Switched to sub window")

        driver.switch_to.window(Tab)

        print(Tab)

        # wait until "Login" appers on the page

        sel = WebDriverWait(driver, 5).until(

            expected_conditions.visibility_of_element_located(

                (By.PARTIAL_LINK_TEXT, "Login")

            )

        )

        # work with login button

        sel.click()

        driver.close()

        break

driver.switch_to.window(ParentWin)

driver.execute_script("window.scrollBy(0, 1000);")

driver.quit()


查看完整回答
反對 回復 2022-10-25
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號