<p><strong>打开Jupyter笔记本:</strong></p>
<p>打开一个命令窗口并导航到存储库文件夹,或者打开<code>anaconda-command-prompt</code>窗口并简单地执行</p>
<ul>
<li><code>jupyter notebook NotebookApp.token='' NotebookApp.password=''</code></li>
</ul>
<p>使用<code>driver.get("http://localhost:8888")</code>加载笔记本后,最棘手的部分是如何选择<code>Dynamically changing object</code>。访问参考号:<a href="https://sqa.stackexchange.com/questions/18342/how-to-handle-dynamic-changing-ids-in-xpath">Dynamically Changing IDs</a>。在</p>
<blockquote>
<ul>
<li>By using <code>find_element_by_xpath</code></li>
<li>By using <code>find_element_by_css_selector</code></li>
</ul>
</blockquote>
<p>这两种方法都会给您相同的选择点,但最好使用Xpath,这是一种更方便的技术。你可以这样向前走</p>
<pre><code>import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome('chromedriver.exe')
wait = WebDriverWait(driver, 20)
driver.maximize_window()
website_url = "http://localhost:8888/"
driver.get(website_url)
# Using Xpath
# I prefer using xpath, because it is simple to understand
# and if you want to dynamically enter data into fields, it would be an awesome approach
driver.find_element_by_xpath("//div[@id='new-buttons']").click()
if len(driver.find_elements_by_xpath("//div[@id='new-buttons']//li[@id='kernel-python3']")) > 0:
time.sleep(3)
driver.find_element_by_xpath("//div[@id='new-buttons']//li[@id='kernel-python3']").click()
driver.find_element_by_xpath('//div[@class="cell code_cell rendered selected"]').click()
# Using css_selector
#driver.find_element_by_css_selector("#notebook-container > div").click()
command = 'print("Hello World!")'
#a = driver.find_element_by_css_selector("#notebook-container > div > div.input > div.inner_cell >"
# "div.input_area > div > div:nth-child(1) > textarea")
time.sleep(3)
# To select Note-Book text-area and place command in it.
a = driver.find_element_by_xpath('//div[@class="input_area"]//textarea').click().send_keys(command)
# To run the Code in Selected Cell
time.sleep(3)
driver.find_element_by_xpath("//button[@title='Run']").click()
print("Test is done.")
</code></pre>