Python Selenium在页面上找不到元素

2024-10-02 20:42:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经仔细阅读了很长一段时间,但找不到解决当前问题的确切或类似的方法。这是我在SO上的第一篇帖子,如果我的格式设置被关闭,我深表歉意

问题- 我试图在网页上找到一个按钮,自动将我按进时钟。我能够登录并导航到正确的页面(该页面似乎是动态加载的,因为从“时间管理”或“付款期限”等不同选项卡切换不会更改URL)

尝试解决- 我尝试过使用直接和间接的XPath、CSS选择器、ID、类、名称,但都失败了。下面包括查找按钮的不同代码尝试,以及包含按钮的代码片段

按钮-HTMLFull Page HTML Source Code

<td>
    <a onclick="return OnEmpPunchClick2(this);" id="btnEMPPUNCH_PUNCH" class="timesheet button icon " href="javascript:__doPostBack('btnEMPPUNCH_PUNCH','')">
        <span> Punch</span></a>
    <input type="hidden" name="hdfEMPPUNCH_PUNCH" id="hdfEMPPUNCH_PUNCH" value="0">
</td>

尝试-PYTHON-全部找不到

#All these return: "Unable to locate element"
self.browser.find_element_by_id("btnEMPPUNCH_PUNCH")
self.browser.find_element_by_xpath("//a[@id='btnEMPPUNCH_PUNCH']")
self.browser.find_element_by_css_selector('#btnEMPPUNCH_PUNCH')

#I attempted a manual wait:
wait=WebDriverWait(self.browser,30)
button = wait.until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'#btnEMPPUNCH_PUNCH')))

#And even manually triggering the script:
self.browser.execute_script("javascript:__doPostBack('btnEMPPUNCH_PUNCH','')")
self.browser.execute_script("__doPostBack('btnEMPPUNCH_PUNCH','')")
#Returns Message: ReferenceError: __doPostBack is not defined

这些都不管用,我也不明白为什么会这样。任何帮助都将不胜感激


Tags: 代码selfbrowseridbyscript页面element