Selenium python复选框click()有时单击提交按钮而不是取消选中框

时间:2017-07-17 19:29:13

标签: python selenium

请关注我,因为这是我的第一个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代码行(仍然提交而不是检查/取消选中框以查找页面下方的类似代码行)
  • 评论“提交”代码

适用于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">

0 个答案:

没有答案