【发布时间】:2019-06-27 12:05:18
【问题描述】:
我正在尝试访问PenFed 以获得我当前的未结金额。我做了很多研究,不幸的是,我仍然很难过。我正在使用 Python Selenium,我试图单击侧面的初始登录按钮以查看用户名字段。这是元素的 HTML 代码:
<a href="https://www.penfed.org/" class="pfui-button-login login-slide-button pfui-button pfui-btn-tertiary-dark-blue-outline" id="mobile-login" data-di-id="#mobile-login">Login</a>
当我尝试运行以下代码时:
driver.find_element_by_id("mobile-login").click()
我收到以下错误:
selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable
即使我尝试使用 WebDriver 等待功能,例如:
try:
WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.ID, "mobile-login"))).click()
except ElementNotVisibleException:
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.ID, "mobile-login"))).click()
无论我让他们等待多久,我都会收到超时消息:
raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:
我的所有研究都表明调用等待函数应该可以修复它,但它对我不起作用。我还读到在单击按钮之前我必须调用的元素顶部可能有一个图像覆盖,但我也没有在网站代码中看到任何内容。如果我正在测试它,我能够通过代码单击按钮的唯一方法是我先物理单击它,所以我不知道我可以使用其他任何东西。提前感谢您的帮助!
更新:我发现以下代码对我有用:
element = driver.find_element_by_id("mobile-login")
driver.execute_script("$(arguments[0]).click();", element)
但我不知道 execute_script 实际上做了什么。有人可以解释那段代码是否有效,或者是否有任何其他替代方案适用于他们?
【问题讨论】:
-
我有点困惑,你是不是想和这个元素交互?
<button class="pfui-button login-slide-button pfui-button-login dtm-global-nav" data-id="Open Log In Drawer" data-component="globalnavl1" type="button"> Log In </button> -
@Rajagopalan 是的,这个线程中的其他人指出,通过调整我的浏览器,我可以看到实际的登录按钮 ID,但我只看到移动登录的 ID。谢谢!
标签: python selenium selenium-webdriver css-selectors webdriverwait