请关注我,因为这是我的第一个Stack Overflow问题。问题是,当我单步执行代码时,它按预期工作 - 清除复选框,并将可变优惠券的值发送到现在可用的文本框。但是,当我运行代码时,下面代码的第2行会导致浏览器有效地单击“保存并提交”按钮。此外,下面代码上方的复选框的类似代码行无论是单步执行还是运行代码。注意:我正在使用Firefox。
以下是我的代码:
IRbox = browser.find_element(By.XPATH, "//tr[@class='interest_rate']//td[@class='edit']//span//input[@type='checkbox']")
if IRbox.is_selected() == True: IRbox.click()
wait.until(EC.presence_of_element_located((By.ID, 'ctl00_ContentPlaceHolder1_tbInterestRate')))
browser.find_element(By.ID, 'ctl00_ContentPlaceHolder1_tbInterestRate').send_keys(coupon)
...
browser.find_element(By.XPATH, "//div//input[@type='submit']").click()
wait.until(EC.title_is('Report'))
在每行代码出现之后打印测试语句,直到第2行之后。错误语句出现在第2行之后,因为代码正在查找现在上一页的元素:
Traceback (most recent call last):
File "C:\Users\sakiyama\AppData\Local\Programs\Python\Python36-32\MyPythonScripts\indtest - selenium.py", line 490, in <module>
wait.until(EC.presence_of_element_located((By.ID, 'ctl00_ContentPlaceHolder1_tbInterestRate')))
File "C:\Users\sakiyama\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
我在剧本中尝试了什么(都具有相同的结果):
适用于IRbox的代码的HTML:
<input id="ctl00_ContentPlaceHolder1_tbIssuePrice_unknown" name="price_at_issue_unknown" value="1" checked="checked" onclick="updateUnknown(this,'ctl00_ContentPlaceHolder1_tbIssuePrice','');" type="checkbox">
IRbox上的代码的HTML不起作用(虽然我怀疑这是一个JS问题):
<input id="ctl00_ContentPlaceHolder1_tbInterestRate_unknown" name="interest_rate_unknown" value="1" checked="checked" onclick="updateUnknown(this,'ctl00_ContentPlaceHolder1_tbInterestRate','');" type="checkbox">