【发布时间】:2017-04-19 14:08:04
【问题描述】:
我正在尝试学习 Selenium。我正在使用 Python 2.7。幻影 JS - 2.1.1.
背景 - 脚本正在尝试将数据输入到控件中。该脚本能够抓住控件。但是,旧执行的数据会被保留。
屏幕截图
其他细节 正如您在 EMAIL 框中看到的那样,保留了最后的执行数据。在复选框中,我单击了相同的复选框,然后它显示为未选中。至于名称字段 - 我使用了 clear() 方法,并且清除了早期的数据。同样的方法不适用于电子邮件文本框。
请找python代码sn-p -
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 制作的。由于我在 React 中为零,我不知道它是如何工作的。我想改变 HTML 输入属性的值,但在检查时我发现它总是正确的
- 我认为问题不在于复选框,我觉得这是我执行 Python 和 Selenium 的方式的问题,因为数据是跨页面和跨脚本执行保存的
- 不确定,如果这一点很重要 - 我正在 c9.io 中开发
【问题讨论】:
-
如果您仅包含重现您的问题所需的代码,这可能对您和我们都有帮助。例如,删除电子邮件位之后的所有内容,并删除之前的所有内容,这对于重现您要纠正的行为是不必要的。
-
以下答案之一可能对您有所帮助:stackoverflow.com/questions/3249583/…
-
@MarkLapierre,感谢您的链接。它解决了与文本字段相关的问题。但是它并不能解决所有问题,复选框中的值仍然保留。
-
目前还不清楚发生了什么。你能改变复选框的值吗?如果是这样,我建议如果您想要检查它,请检查它,或者如果您希望它不选中,请取消选中它。如果这没有帮助,您能否确切地告诉我复选框发生了什么,以及您希望发生什么?
-
@MarkLapierre,我在原始帖子的“编辑 2 - 附加信息”下提供了更多详细信息。 First Pass:我在登录后在所有不同的页面中输入数据。 Second Pass - 我在 Pass 1 中输入的数据被保留。因此,我必须在输入新数据之前清理数据。可以清理文本框,下拉不会造成问题。但是复选框和单选按钮会带来问题。如果在第一遍中单击“是”,则在第二遍中将其保留,这是我不想要的