簡體   English   中英

Python / Selenium / PhantomJS-執行之間保留的數據

[英]Python/Selenium/PhantomJS - Data retained between execution

我正在嘗試學習硒。 我正在使用Python 2.7。 Phantom JS-2.1.1。

背景-腳本試圖將數據輸入控件。 該腳本能夠捕獲控件。 但是,來自較舊執行的數據將保留。

屏幕截圖

在此處輸入圖片說明

其他詳細信息如您在“電子郵件”框中所看到的,保留了最后的執行數據。 在“復選框”中,我單擊了相同的復選框,然后未選中它。 至於名稱字段-我使用clear()方法,並且較早的數據已清除。 同樣的方法不適用於電子郵件文本框。

請找到python代碼段-

import time,traceback
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

COMPANY_NAME = 'AHXJ OF KCH'
FIRST_NAME = 'Bill'
LAST_NAME = 'CLINTON'
EMAIL = 'bill.clinton@whitehouse.com'

driver = webdriver.PhantomJS()
driver.delete_all_cookies()
driver.implicitly_wait(10)
driver.set_window_size(1120, 550)
try:
    driver.get("https://username:password@url/")
    select_state = Select(driver.find_element_by_id('state_abbrev'))
    select_state.select_by_visible_text('Arizona')
    time.sleep(5)
    select_business_segment =           Select(driver.find_element_by_id('business_segment_id'))
    select_business_segment.select_by_visible_text('IT/Technology')
    time.sleep(5)
    select_business_type = Select(driver.find_element_by_id('business_type_id'))
    select_business_type.select_by_visible_text('Application Development')
    driver.save_screenshot(COMPANY_NAME+ '_home_page_screenshot.png')
    driver.find_element_by_xpath('//*[@id="chubb_commercial_entry_form"]/div/button').click()
    time.sleep(10)
    #wait = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, 'product_codes__bop')))
    driver.find_element_by_xpath('//*[@id="field_for_product_codes__bop"]/label').click()
    comp_name = driver.find_element_by_id('business_name')
    comp_name.clear()
    comp_name.send_keys(COMPANY_NAME)
    email = driver.find_element_by_id('email')
    email.clear()
    email.send_keys(EMAIL)
    driver.save_screenshot(COMPANY_NAME+ '_business_info_screenshot.png')
    driver.find_element_by_xpath('//*[@id="commercial-app"]/div/div[2]/div[2]/div/div[2]/form/div[1]/div/div/button').click()
    time.sleep(10)
   ...
except Exception,e:
    print e
    driver.save_screenshot('error_screenshot.png')
    traceback.print_exc()
finally:
    driver.quit()

編輯2-其他信息

  1. 該網站是使用ReactJS創建的。 由於我在React中為零,所以我不知道它是如何工作的。 我考慮過更改HTML輸入屬性的值,但是在檢查時發現它始終是正確的
  2. 我認為問題不在於復選框,我認為這是我執行Python和Selenium時遇到的問題,因為數據跨頁和跨腳本執行保存
  3. 不知道這點是否重要-我正在c9.io中進行開發

圖片-點擊前 在此處輸入圖片說明

圖片-點擊后 在此處輸入圖片說明

該站點可能會將用戶輸入緩存在Cookie或本地存儲中。 網站通常會這樣做,以使您可以在頁面之間來回導航,或稍后返回到表單,而不必再次填寫所有詳細信息。 例如, 這就是站點可能在React中保持狀態的方式

您可以使用瀏覽器的開發工具進行查找。 例如, 這是您在Chrome中的操作方法 該圖像顯示了可能正在使用的各種類型的存儲。

Chrome開發人員工具本地存儲檢查

如果您想在沒有任何先前輸入的情況下開始每個測試,則需要將其刪除。 如果該站點存儲cookie,並且您沒有要保存的其他cookie,則可以將其全部刪除:

driver.delete_all_cookies()

也可以刪除單個cookie

如果該站點使用本地存儲,那么目前使用python有點麻煩,因為它看起來並不像python綁定那樣實現了訪問本地存儲的方式 我可能是錯的。 但是您可以使用javascript,如下所示:

driver.execute_script('window.localStorage.clear();')

這將刪除與當前域關聯的所有本地存儲。 與cookie一樣,如有必要, 也可以使用多種方法訪問單個項目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM