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

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

找不到 Xpath 元素

找不到 Xpath 元素

白衣染霜花 2022-08-16 10:43:49
有人可以建議如何定位和元素在iframe asi下面得到錯誤。我正在嘗試在Salesforce Pardot頁面上實現自動化腳本,并且有2個iframe,我想訪問1st iframe Tag上的按鈕并單擊相同的內容。錯誤:- selenium.common.exceptions.NoSuchElementException: Message: no such element: unable to locate element: {“method”:“xpath”,“selector”:“//*[starts-with(@class,'slds-button_reset')]”} (Session info: chrome=80.0.3987.122)DOM 按鈕元素的屏幕截圖DOM 按鈕元素以及 Iframe 標記的屏幕截圖以前編寫的代碼from selenium import webdriverchrome_options = webdriver.ChromeOptions()prefs = {'download.default_directory': r'C:\Pardot'}chrome_options.add_experimental_option('prefs', prefs)driver = webdriver.Chrome(executable_path="D:\XXX XXXX\XXXX\drivers\chromedriver.exe", options=chrome_options)driver.get('https://pi.pardot.com/engagementStudio/studio#/15627/reporting')user_name = driver.find_element_by_css_selector('#email_address')user_name.send_keys('XXXXXXXXXXXXXXXXXXX')password = driver.find_element_by_css_selector('#password')password.send_keys('XXXXXXXXXXXXXXXXX)submit_button = driver.find_element_by_css_selector('input.btn')submit_button.click()iframe_list =  driver.find_elements_by_tag_name("iframe")driver.switch_to.frame(iframe_list[0])driver.find_element_by_xpath("//*[starts-with(@class,'slds-button_reset')]")driver.close()
查看完整描述

4 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

由于所需的元素位于要在元素上調用的 so 中,因此您必須:<iframe>click()


誘導WebDriver為所需的.frame_to_be_available_and_switch_to_it()

誘導WebDriver為所需的.element_to_be_clickable()

您可以使用以下任一定位器策略:


用:CSS_SELECTOR


WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#content-frame")))

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[data-qa='reporting-filter-trigger-toggle'][data-ember-action]"))).click()

用:XPATH


WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='content-frame']")))

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@data-qa='reporting-filter-trigger-toggle' and @data-ember-action]"))).click()

注意:您必須添加以下導入:


from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反對 回復 2022-08-16
?
GCT1015

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

我希望您正在切換到正確的iframe來獲取元素...請參閱下面的示例


driver.switchTo().frame("content-frame")

driver.findElement(By.xpath("//div[@id='ember740']/div[2]/div/ol/li/div/button")

driver.switchTo().defaultContent()


查看完整回答
反對 回復 2022-08-16
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

您需要首先獲取iframe標簽,然后像下面一樣將驅動程序切換到它。

driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))假設該驅動程序是 Webdriver 的正常實例。要繼續使用默認內容,請執行driver.switch_to.default_content()

請參考此鏈接


查看完整回答
反對 回復 2022-08-16
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

試試這個 : //li[@id='ember943']


查看完整回答
反對 回復 2022-08-16
  • 4 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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