Python/Selenium/PhantomJS-执行之间保留的数据

Python/Selenium/PhantomJS-执行之间保留的数据,python,selenium,phantomjs,Python,Selenium,Phantomjs,我正在努力学习硒。我正在使用Python 2.7。幻影JS-2.1.1 后台-脚本正在尝试将数据输入控件。脚本能够捕获控件。但是,会保留以前执行的数据 截图 其他细节 正如您在电子邮件框中看到的,最后的执行数据将被保留。在复选框中,我单击了相同的复选框,然后它显示为未选中。至于名称字段,我使用了clear方法,先前的数据被清除了。相同的方法不适用于电子邮件文本框 请查找python代码片段- import time,traceback from selenium import webdriver

我正在努力学习硒。我正在使用Python 2.7。幻影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-其他信息

该站点是使用ReactJS创建的。因为我没有反应,所以我不知道它是如何工作的。我曾想过更改HTML输入属性的值,但在检查时我发现它总是正确的 我不认为问题出在复选框上,我觉得问题出在我执行Python和Selenium的方式上,因为数据是跨页面和跨脚本执行保存的 不确定,这一点是否重要-我正在c9.io中开发 图像-单击之前

图像-点击后

该站点可能正在将用户输入缓存在cookie或本地存储中。网站通常会这样做,以允许您在页面之间来回导航,或稍后返回表单,而无需再次填写所有详细信息。例如

您可以使用浏览器的开发工具来查找。例如此图显示了可能正在使用的各种类型的存储器

如果您想在没有任何先前输入的情况下启动每个测试,则需要将其删除。如果站点存储cookie,而您没有任何其他要保存的cookie,则可以删除所有cookie:

也有可能

如果站点使用本地存储,那么就目前而言,python有点麻烦,因为它看起来不像python绑定实现了访问本地存储的方法。我可能错了。但您可以使用javascript,如下所示:

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

这将删除与当前域关联的所有本地存储。如有必要,可使用饼干

如果您只包含重现问题所需的代码,这可能对您和我们都有帮助。例如,删除电子邮件位之后的所有内容,并删除在此之前复制您想要纠正的行为所不需要的所有内容。以下答案之一可能会对您有所帮助:@MarkLapierre,谢谢您的链接。解决了文本字段的相关问题。但是它并不能解决所有问题,复选框中的值仍然保留着。现在还不清楚到底发生了什么。您可以更改复选框的值吗?如果是这样的话,我建议如果你想检查它,就检查它;如果你想不检查它,就取消选中它。如果这没有帮助,你能确切地告诉我复选框发生了什么,以及你希望发生什么吗?@MarkLapierre,我已经在“编辑2-原始帖子中的附加信息”中提供了附加详细信息。第一关:我在登录后在所有不同的页面中输入数据。第二遍-保留我在第1遍中输入的数据。因此,我必须在输入新数据之前清理数据。文本框可以清理,下拉列表不会造成问题。但是复选框和单选按钮带来了一个问题。如果在第一遍点击“是”,那么在第二遍点击“是”,它会被保留,我不想做汉克标记。我试过了,效果很好。数据存储在本地存储器中。
driver.execute_script('window.localStorage.clear();')