我正在尝试从位于网页内的嵌套 iframe 中抓取一些数据。我的最终目标是点击图片中的这个按钮:
我进入了第一个 iframe,但找不到嵌套的 iframe。这是我的代码:
import openpyxl
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:.....")
driver = webdriver.Chrome(executable_path=".....\chromedriver.exe", chrome_options=options)
driver.wait = WebDriverWait(driver,15)
driver.get('https://test...com')
time.sleep(10)
driver.maximize_window()
driver.switch_to.default_content()
driver.switch_to.frame(driver.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'.oneAlohaPage'))).find_element_by_tag_name('iframe'))
之后,我使用此代码检查其他 iframe:
ids = driver.find_elements_by_xpath('//*[@name]')
for ii in ids:
print('tag_name1: '+str(ii.tag_name))
print('tag_name2: '+str(ii.get_attribute('tag_name')))
print('name: '+str(ii.get_attribute('name')))
print('id: '+str(ii.get_attribute('id')))
print('value: '+str(ii.get_attribute('value')))
print('innerHTML: '+str(ii.get_attribute('innerHTML')))
print('outerHTML: '+str(ii.get_attribute('outerHTML')))
print('href: '+str(ii.get_attribute('href')))
print('src: '+str(ii.get_attribute('src')))
输出:
tag_name1: iframe
tag_name2: None
name: oneiframe
id: 0.5326085674477172
value: None
innerHTML:
outerHTML: <iframe frameborder="false" src="https://sales....?v25" name="oneiframe" style="width:100%; height: 100%; position: absolute;overflow:hidden;" scrolling="false" data-aura-rendered-by="15:0" id="0.5326085674477172"></iframe>
href: None
src: https://sales....?v25
我无法进入嵌套的 iframe,最后单击此按钮。谁能帮我?
额外信息:
HTML nested iframe: <iframe frameborder="false" src="https://sales....?v25" name="oneiframe" style="width:100%; height: 100%; position: absolute;overflow:hidden;" scrolling="false" data-aura-rendered-by="15:0" id="0.5326085674477172"></iframe>
JS Path for nested iframe: document.querySelector("#\\30 \\.5326085674477172")
HTML of the button: <button type="button" class="ant-btn ant-btn-link"><span class="ant-typography"><u>Test-123</u></span></button>
JS path of the button: document.querySelector("#root > div:nth-child(2) > div > div.ant-tabs-content.ant-tabs-content-animated.ant-tabs-top-content > div.ant-tabs-tabpane.ant-tabs-tabpane-active > div.ant-row > div > div > div > div > div > div > div > div > table > tbody > tr > td:nth-child(1) > button")