【问题标题】:Python Selenium Button Won't ClickPython Selenium 按钮不会点击
【发布时间】:2017-08-29 19:52:21
【问题描述】:

我正在尝试单击此“开始”按钮,但它没有工作。

这是 HTML:

<a name="DERIVED_SSS_SCL_SSS_GO_1" id="DERIVED_SSS_SCL_SSS_GO_1" role="button" onclick="javascript:cancelBubble(event);" href="javascript:submitAction_win1(document.win1,'DERIVED_SSS_SCL_SSS_GO_1');"><img src="https://sims-prd.sfu.ca/cs/csprd/cache/PT_NAV_GO_1.gif" name="DERIVED_SSS_SCL_SSS_GO_1$IMG" alt="Go" title="Go" border="0"></a>

我尝试了以下方法:

driver.find_element_by_xpath('//*[@id="DERIVED_SSS_SCL_SSS_GO_1"]').click()
driver.find_element_by_xpath("//a[contains(@href,'win1')]").click()
driver.find_element_by_id('DERIVED_SSS_SCL_SSS_GO_1').click()

感谢任何帮助。 谢谢。

编辑:包含更多 HTML,希望能够缩小我的问题范围。 我一定错过了这里的一些东西。

<td height="28"></td>
<td colspan="4" align="left" valign="top">
<div id="win1div$ICField281">
<table cols="1" class="PABACKGROUNDINVISIBLEWBO" cellspacing="0" cellpadding="2" width="163">
<tbody><tr>
<td class="PAGROUPBOXLABELINVISIBLE" align="left">Group Box</td>
</tr>

<tr>
<td width="161">
<table role="presentation" id="ACE_$ICField281" cols="3" class="PABACKGROUNDINVISIBLE" style="border-style:none" cellspacing="0" cellpadding="0" border="0" width="161">
<tbody><tr>
<td width="3" height="0"></td>
<td width="132"></td>
<td width="26"></td>
</tr>

<tr>
<td colspan="2" height="1"></td>
<td rowspan="2" align="left" valign="top" nowrap="nowrap">
<div id="win1divDERIVED_SSS_SCL_SSS_GO_1"><a name="DERIVED_SSS_SCL_SSS_GO_1" id="DERIVED_SSS_SCL_SSS_GO_1" role="button" onclick="javascript:cancelBubble(event);" href="javascript:submitAction_win1(document.win1,'DERIVED_SSS_SCL_SSS_GO_1');"><img src="https://sims-prd.sfu.ca/cs/csprd/cache/PT_NAV_GO_1.gif" name="DERIVED_SSS_SCL_SSS_GO_1$IMG" alt="Go" title="Go" border="0"></a><!-- DERIVED_SSS_SCL_SSS_GO_1 --></div>
</td>
</tr>

<tr>
<td height="22"></td>
<td align="left" valign="top">
<div id="win1divDERIVED_SSS_SCL_SSS_MORE_ACADEMICS"><select name="DERIVED_SSS_SCL_SSS_MORE_ACADEMICS" id="DERIVED_SSS_SCL_SSS_MORE_ACADEMICS" size="1" class="PSDROPDOWNLIST" style="width:132px; ">
<option value="">&nbsp;</option>
<option value="4010">Academic Planner</option>
<option value="3010">Academic Requirements</option>
<option value="2015">Apply/Cancel Graduation</option>
<option value="SFU4">Appointment Booking</option>
<option value="SFU5">Confirmation of Enrollment</option>
<option value="2050">Course History</option>
<option value="SFU7">Credential Completion Letter</option>
<option value="1002">Enrollment Activity</option>
<option value="1020">Exam Schedule</option>
<option value="SFU1">Link to SFU Canvas</option>
<option value="SFU2">Prev. Requested Reports</option>
<option value="SFU6">Transcript: Advising</option>
<option value="SFU3">Transcript: Official</option>
<option value="2035">Transcript: Unofficial</option>
<option value="2025">Transfer Credit: Report</option>
<option value="9999" selected="selected">other academic...</option>
</select></div>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</div>
</td>

【问题讨论】:

  • 可以分享一下错误日志吗?
  • 没有错误。它只是不点击按钮。
  • 如果可以的话,请发布网址以检查完整的html代码。
  • 恐怕我做不到。这是用于学校登录的,因此没有凭据,您将无法访问该页面。我在原始帖子中添加了更多 HTML。

标签: python selenium button xpath


【解决方案1】:

试试这个代码,看看它是否有效-

 element = driver.find_element_by_id("DERIVED_SSS_SCL_SSS_GO_1")
 driver.execute_script("arguments[0].click();", element)

更新

element = driver.find_element_by_xpath('//*[@id="DERIVED_SSS_SCL_SSS_GO_1"]/img')
driver.execute_script("arguments[0].click();", element)

【讨论】:

  • 我没有收到错误消息。只是没有按下按钮。我在原始帖子中添加了更多 HTML。希望这会有所帮助。
  • 我收到此错误:selenium.common.exceptions.InvalidSelectorException:消息:给定 xpath 表达式“//[@id="DERIVED_SSS_SCL_SSS_GO_1"]/img" 无效:SyntaxError:表达式不是法律表达。
  • @RubiksH -- 再次更新。请试试这个。它现在应该可以工作了。
  • 我仍然遇到同样的错误。 selenium.common.exceptions.InvalidSelectorException:消息:给定 xpath 表达式“//[@id="DERIVED_SSS_SCL_SSS_GO_1"]/img”无效:SyntaxError:表达式不是合法表达式。
  • @RubiksH - 单引号和双引号存在问题。请再试一次。只需从此处复制并将其粘贴到您的代码中即可。
【解决方案2】:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

selector = "//a[@id='DERIVED_SSS_SCL_SSS_GO_1']"

先试试这个:

element = WebDriverWait(driver, 5).until(
    EC.visibility_of_element_located((By.XPATH, selector))
)
element.click()

如果它不起作用,给这个机会:

element = WebDriverWait(driver, 5).until(
    EC.element_to_be_clickable((By.XPATH, selector))
)
element.click()

【讨论】:

  • 他们都无法点击按钮。
  • 您使用的是哪个驱动程序(Chrome 或 Firefox)以及它的哪个版本?
  • 我使用的是 Firefox geckodriver-v0.18.0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 2016-05-08
  • 2021-09-14
  • 2018-05-11
  • 1970-01-01
相关资源
最近更新 更多