您好,我对selenium是个新手。如果我在下面遇到错误,请有人建议如何在iframe中定位和元素
我试图在Salesforce Pardot页面上实现一个自动化脚本,有两个iframe,我想访问第一个iframe标签上的按钮并单击相同的按钮
Error:- 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)
Screenshot for DOM Button Element
Screenshot for DOM Button Element along with Iframe tag
以前编写的代码
from selenium import webdriver
chrome_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()
试试这个: //李[@id='ember943']
由于所需元素位于
<iframe>
内,因此要在元素上调用click()
,您必须:frame_to_be_available_and_switch_to_it()
诱导WebDriverWait李>element_to_be_clickable()
诱导WebDriverWait李>您可以使用以下任一Locator Strategies:
使用
CSS_SELECTOR
:使用
XPATH
:注意:您必须添加以下导入:
参考文献
您可以在以下内容中找到一些相关讨论:
您需要首先获得iframe标记,并将驱动程序切换到它,如下所示
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
假设驱动程序是webdriver的健康实例。要继续使用默认内容,请执行以下操作:driver.switch_to.default_content()
请参阅this link
相关问题 更多 >
编程相关推荐