在python中使用selenium处理帧

2024-09-28 22:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉使用selenium,目前正在努力收集登录后和框架内的一些数据(底部为html)。我想收集的数据在代码的“#文档”部分,有人能解释一下如何获取这些数据吗

我不清楚这是否在"MembersHostFrame"

我是否需要使用此代码-

driver.switch_to.default_content()
driver.switch_to.frame("MembersHostFrame")

code


Tags: to数据代码文档框架defaulthtmldriver
3条回答

您可以使用下面的代码打开框架

iframe=driver.find_element_by_id("MemberHostFrame")
driver.switch_to.frame(iframe)

您可以使用以下代码切换回主窗口:

driver.switch_to.default_content()

已更新部分以等待出现帧:

wait = WebDriverWait(driver, 20)
wait.until(EC.presence_of_element_located((By.ID, "MemberHostFrame")))

注意::::请将以下导入添加到您的解决方案中

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

工作代码:

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r"path for chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 10)
driver.get("https://members.bet365.com/members/services/host?Microsite=Members&MrsReq=True&DisplayMode=Desktop&prdid=1&platform=1&lng=1&mh=2&ptqs=%2Fhe%2FAuthenticated%2FHistory%2FDisplay%2F%3Frt%3D2%26ht%3D4")

WebDriverWait(driver, 30).until(
                EC.presence_of_all_elements_located((By.ID, "MembersHostFrame")))
iframe=driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)
wait.until(EC.element_to_be_clickable((By.NAME, "ctl00$Main$login$UserName"))).send_keys("Example123")

输出:

enter image description here

我认为这应该回答你的问题。 Select iframe using Python + Selenium

您需要切换到iframe,然后找到元素。你的假设是正确的。根据提供的链接中的注释,您可能需要使用xpath从iframe中获取数据

要访问iframe中的元素,需要首先切换到iframe

诱导WebDriverWait()并等待frame_to_be_available_and_switch_to_it(),然后使用以下IDNameXpathcss选择器

ID:

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"MembersHostFrame")))

名称:

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"MembersHostFrame")))

Xpath

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

Css选择器:

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"#MembersHostFrame")))

您需要导入以下库

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

相关问题 更多 >