Python Selenium : clicking a "visible" element using Selenium gives me an "element not visible" error

标签 python selenium selenium-webdriver

我正在尝试针对该网站进行测试。 (https://www.phptravels.net/),我想测试它的登录功能。有一个“我的帐户”链接,需要先单击该链接才能显示登录和注册按钮的下拉菜单。 HTML代码是这样的:

<li id="li_myaccount" class="">
    <a href="javascript:void(0);" data-toggle="dropdown" class="dropdown-toggle go-text-right" aria-expanded="false"><span class="ink animate" style="height: 137px; width: 137px; top: -10.7969px; left: -28.7344px;"></span><i class="icon_set_1_icon-70 go-right"></i> My Account <b class="lightcaret mt-2 go-left"></b></a>
    <ul class="dropdown-menu">
        <li><a class="go-text-right" href="https://www.phptravels.net/login"> Login</a></li>
        <li><a class="go-text-right" href="https://www.phptravels.net/register">  Sign Up</a></li>
    </ul>
</li>

当我尝试单击“我的帐户”按钮时,它会抛出一条错误消息,指出“元素不可见”。我很困惑,因为显然这个按钮一直都是可见的。这是代码:

elem = driver.find_element_by_xpath("//*[@id='li_myaccount']/a")
elem.click()

我的代码有什么问题吗?谢谢。

最佳答案

我尝试与“我的帐户”链接进行交互,该链接显示在页面导航栏的右侧部分 ( https://www.phptravels.net/ )。使用定位器 //*[@id='li_myaccount']/a 当我尝试使用 Webdriver 单击链接时,出现以下错误:

ElementNotVisibleException: Message: element not interactable

当我使用 Chrome 控制台浏览 html 并使用定位器 //*[@id='li_myaccount']/a 搜索元素时,您想要单击的“我的帐户”链接没有出现不会突出显示。

因此进一步的探索让我选择了定位器//*[contains(@class,'navbar-nav navbar-right')]//*[@id='li_myaccount']/a 其中突出显示了“我的帐户”链接。

然后我使用新的定位器单击“我的帐户”链接,使用 Webdriver,它起作用了! 如果您仔细观察,我只是在您共享的定位器中添加了前面的路径,以唯一标识“我的帐户”链接。

Click My Account Link

关于Python Selenium : clicking a "visible" element using Selenium gives me an "element not visible" error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155904/

相关文章:

python - K-最近邻找到所有关系

java - 如何使用 Java 获取 chromedriver 进程 PID?

python - 如何使用 Selenium 和 Python 查找 div 元素

java - XPath选择器Selenium WebDriver,无法使用ID

java - 我的代码 Thread.sleep 有效,但不能隐式等待?

html - 是否可以有没有高度和宽度的可见元素?

python - 如何通过复制将一维数组转换为二维数组

python - Django Admin通用内容类型多模型内联表单

python - 如果禁用记录器,则防止创建空日志文件

Java - Selenium(chrome 驱动程序)元素不可见异常