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

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

在python中通過selenium打開chrome時,HTML頁面似乎添加了iframe元素

在python中通過selenium打開chrome時,HTML頁面似乎添加了iframe元素

jeck貓 2023-12-11 10:43:10
我是硒和網絡自動化任務的新手,我正在嘗試使用 chromedriver 編寫一個應用程序,用于在 PubMed 上自動搜索論文。我的目標是點擊 PubMed 主頁右上角的&ldquo;登錄&rdquo;按鈕,所以問題是:當我手動打開 PubMed 主頁時,html 源中沒有 iframes 標簽,因此&ldquo;登錄&rdquo;元素應該可以通過其 xpath 輕松訪問"http://*[@id="sign_in"]"。當同一頁面由 selenium 打開時,我無法通過其 xpath 找到&ldquo;登錄&rdquo;元素,并且如果嘗試檢查它,html 源似乎已將其嵌入到標簽中<iframe>,因此無法再找到它,除非一個driver._switch_to.frame方法被執行。但是如果我打開html源代碼并Ctrl+U搜索<iframe>element,仍然沒有它們。這是&ldquo;登錄&rdquo;元素檢查捕獲:["Sign?in"?inspection][1]我已經通過以下方式解決了這個問題:bot = PubMedBot()bot.driver.get('https://www.ncbi.nlm.nih.gov/pubmed')sleep(2)frames = bot.driver.find_elements_by_tag_name('iframe')bot.driver._switch_to.frame(frames[0])btn = bot.driver.find_element_by_xpath('/html/body/a')btn.click()但我想了解的是為什么檢查代碼與 html 源代碼不同,這個<iframe>元素是否真的不知從何而來,如果是的話為什么。
查看完整描述

1 回答

?
守著一只汪

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

您因同步而遇到問題。請找到以下解決方案來解決您的問題:


from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium import webdriver


driver = webdriver.Chrome(executable_path=r"path ofchromedriver.exe")

driver.maximize_window()

wait = WebDriverWait(driver, 10)

driver.get("https://www.ncbi.nlm.nih.gov/pubmed")

iframe = wait.until(EC.presence_of_element_located((By.TAG_NAME, "iframe")))

driver.switch_to.frame(iframe)

wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), 'Sign in to NCBI')]"))).click()

輸出:

https://img1.sycdn.imooc.com/65767768000195a512260547.jpg

檢查元素:

https://img1.sycdn.imooc.com/657677740001447302820290.jpg


查看完整回答
反對 回復 2023-12-11
  • 1 回答
  • 0 關注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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