为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Python Selenium 在不刷新页面的情况下重新加载 Web 源代码

使用 Python Selenium 在不刷新页面的情况下重新加载 Web 源代码

忽然笑 2023-06-20 16:19:54
您好,请问有没有什么方法可以不刷新页面就可以刷新站点源代码。问题是当我加载页面http://107.170.101.241:8080/getTableColumn/并在其中放置一些信息时 - 您可以在下面的代码中看到,然后单击分析显示新的文本区域。我想从这个文本区域获取文本,但我不能,因为源代码是“旧的”并且 xpath 无法找到它。最后一行代码是我要打印到控制台的内容。我尝试了 time.sleep 等,但没有任何帮助。from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectimport timechromedriver = "/usr/local/bin/chromedriver"driver = webdriver.Chrome(chromedriver)driver.get("http://107.170.101.241:8080/getTableColumn/")time.sleep(1)datab = driver.find_element_by_xpath("//select[@name='dbVendor']")database = Select(datab)database.select_by_visible_text("Sybase")datab2 = driver.find_element_by_xpath("//select[@name='options']")database2 = Select(datab2)database2.select_by_visible_text("Show By SQL Clause")txt = driver.find_element_by_xpath("//textarea[@name='sql']")txt.clear()txt.send_keys("select trd.M_NB as 'Trade_number' from CRD_TRADE_REP trd")txt1 = driver.find_element_by_xpath("//textarea[@name='metadata']")txt1.clear()txt1.send_keys("CRD_TRADE_REP, M_NB")analyze = driver.find_element_by_xpath("//input[@type='submit']")analyze.send_keys("")analyze.send_keys(Keys.RETURN)#cant find this textarea belowout = driver.find_element_by_xpath("//textarea[@name='outputText']")
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

在 devtools 中,如果你从你的元素向上滚动,你可以看到你的输出文本区域嵌套在:


<iframe name="result" id="result" style="height: 180px; width: 800px;" scrolling="no" frameborder="0">

这些需要在硒中进行额外处理。


在脚本末尾试试这个:



#Get the frame

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


#wait for your object to be ready - i  use clickable as i like it

out = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//textarea[@name='outputText']")))


print(out.text)

#do stuff your stuff to the "out" element here


#when ready to go back to the main page content (not the iframe)

driver.switch_to_default_content()

当我运行你的代码时,我得到了输出:


表:tetSelect CRD_TRADE_REP(1,40) 列:selectList CRD_TRADE_REP.M_NB(1,12)


查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信