介绍
在上一篇文章中,我用Docker容器创建了一个Python环境,并尝试操作Selenium。
这次以网页的形式输入数值,查看结果的显示。
请注意,它可能很难看到,因为我写它是为了保留使用 Selenium 操作网页的基本部分的备忘录。
进行
这一次,我将尝试以下项目。
1. 使用 Selenium 启动 Chrome。
2. 显示网页。
3. 单击页面中的按钮元素可移动到该页面。
4. 等待过渡后页面上显示所需元素。
5.从页面的p元素中获取文本。
6. 单击页面中的按钮元素,显示对话框。
7. 在对话框的输入元素中输入一个值。
8. 从对话框的下拉菜单中选择一个值。
9. 单击对话框中的按钮元素提交数据。
10. 等待显示传输完成警报。
11. 单击警报中的确定按钮。
12.重新加载页面以更新页面中的信息。
13. 等待所需元素出现在重新加载的页面上。
14.从页面的p元素中获取文本。
如何使用Docker搭建Python的Selenium环境请参考上一篇(【Python】在Docker容器中尝试使用selenium)。
尝试使用硒
实现代码
这是这次实现的代码。
docker_selenium.py
import time from selenium import webdriver from selenium.webdriver.common.alert import Alert from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # webのフォームに入力する内容を変数に格納 MILAGE = 38.38 ELEVATION = 218 WEATHER = ['晴れ', '曇り', '雨'] # webdriverのオプションを設定 options = webdriver.ChromeOptions() options.add_argument('--headless') print('Connect remote browser...') driver = webdriver.Remote(command_executor='172.21.0.3:4444/wd/hub', options=options) print('remote browser connected...') try: # ブラウザでWebページを開く driver.get('https://xxxxxxxx.herokuapp.com/') print('current URL: ', driver.current_url) # ボタンをクリックしページ遷移する処理 bicycle_button = driver.find_element(By.XPATH, '//input[@id="button_bicycle"]') bicycle_button.click() print('current URL: ', driver.current_url) # ページの読み込みのための最大待ち時間 print('Max 5 secound wait...') wait = WebDriverWait(driver, 5) wait.until(EC.visibility_of_element_located((By.XPATH, '//p[@id="sum_milage"]'))) # 新規データ入力前の今月の走行距離のテキストを取得する bicycle_page_message_2 = driver.find_element(By.XPATH, '//p[@id="sum_milage"]').get_attribute('textContent') print('bicycle_page_message_2 before: ',