Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 硒罐';t按名称或id查找元素,如何标识并切换到iframe_Python_Selenium - Fatal编程技术网

Python 硒罐';t按名称或id查找元素,如何标识并切换到iframe

Python 硒罐';t按名称或id查找元素,如何标识并切换到iframe,python,selenium,Python,Selenium,我已经研究过类似的问题,我想我试图找到的是一个iframe。但我不知道如何切换到帧或搜索帧。有人能帮忙吗 实际上,我不确定这是否是一个iframe问题。如果是: 需要帮助1)查找iframe 2)然后切换到该iframe,以便我可以按名称或id将文本输入元素,如下所示 如果不是,问题是什么 from selenium import webdriver from selenium.webdriver.common.keys import Keys main='http://www.hkexnews

我已经研究过类似的问题,我想我试图找到的是一个iframe。但我不知道如何切换到帧或搜索帧。有人能帮忙吗

实际上,我不确定这是否是一个iframe问题。如果是:

需要帮助1)查找iframe 2)然后切换到该iframe,以便我可以按名称或id将文本输入元素,如下所示

如果不是,问题是什么

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
main='http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx'


driver=webdriver.Chrome(path)
driver.get(main)
elem = driver.find_element_by_id("ct100_txt_stock_code")
elem = driver.find_element_by_name("ct100$txt_stock_code")

您可以使用以下工作代码段:

driver.get("http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx")

stock_code = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "ctl00_txt_stock_code")))
stock_code.click()
stock_code.send_keys("12345")
time.sleep(5) # this is only to see the result
注意:您必须添加一些导入:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
import time
我们的想法是使用
WebDriverWait
,它将至少等待10秒钟,直到元素可单击,然后才单击它。没有iFrame,所以问题是脚本速度太快,试图单击元素,而元素当前不在DOM中
WebDriverWait
修复了此问题

PS:我建议您查看一下,以获取更多信息。

根据url
http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx
要向元素发送文本为股票代码的字符序列,您需要为所需元素导入WebDriverWait要可单击,您可以使用以下代码块:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    main='http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx'
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get(main)
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='arial12black' and @id='ctl00_txt_stock_code']"))).send_keys("51584821")
    
  • 浏览器快照:


我花了大约10秒钟才找到这个:@BryanOakley ok???那么这对我有什么帮助呢。。。你在我的html中看到任何
iframe
标记了吗?你写了“我不知道如何切换到框架”,你问题的标题提到了如何切换到iframe,这个问题向你展示了如何切换到iframe。你需要什么帮助还不太清楚。在查找框架元素、切换到框架元素或其他方面需要帮助吗?@BryanOakley现在怎么样?清楚的