【发布时间】:2020-12-13 00:21:38
【问题描述】:
您好,请问有什么方法可以在不刷新页面的情况下刷新站点源代码。问题是当我加载页面http://107.170.101.241:8080/getTableColumn/ 并在那里放置一些信息时 - 您可以在下面的代码中看到,然后单击分析显示新的文本区域。我想从这个 textarea 中获取文本,但我不能,因为源代码是“旧的”并且 xpath 找不到它。最后一行代码是我要打印到控制台的内容。我尝试了 time.sleep 等,但没有任何帮助。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time
chromedriver = "/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 below
out = driver.find_element_by_xpath("//textarea[@name='outputText']")
这是回溯:
Traceback (most recent call last):
File "/Users/martinkubicka/Documents/fiverrgde.py", line 32, in <module>
out = driver.find_element_by_xpath("//textarea[@name='outputText']")
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//textarea[@name='outputText']"}
(Session info: chrome=84.0.4147.135)
【问题讨论】:
-
使用基于相关 HTML、代码试验和错误堆栈跟踪的格式化文本更新问题。
-
我认为您只是遇到了同步问题...您正在按下按钮并期望输出“立即”出现...但是,我认为有些脚本需要先运行....您是否在寻找输出文本出现之前? - 在创建驱动程序时添加隐式等待或添加显式等待以等待它出现 - 请参见此处:selenium-python.readthedocs.io/waits.html
-
您的输出文本在 iframe 中
-
@RichEdwards 当我将 iframe 打印为文本时,它什么也没给我。试试看。
标签: python selenium dom reload