java - 无法使用 selenium-Java 单击提交按钮
问题描述
我创建了一个小脚本去 reddit 登录页面输入用户名和密码。我的最后一步是单击登录按钮,但我的 xpath 无法找到它并单击该按钮。我尝试了各种不同的方法,但似乎都没有奏效。
以下是我尝试过的
driver.findElement(By.xpath("//input[@type='submit']")).click();
driver.findElement(By.xpath("//button[@class='submit']")).click();
driver.findElement(By.className("submitButton")).click();
以下是 chrome 检查给出的内容
<button class="AnimatedForm__submitButton m-full-width" type="submit">
Log In
</button>
解决方案
使用WebDriverWait()
等待elementToBeClickable()
和关注xpath
。
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(.,'Log In')]"))).click();
或者
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='AnimatedForm__submitButton m-full-width' and @type='submit']"))).click();
推荐阅读
- python-3.x - 使用 Python 从网站请求中获取完整的 html
- python - 使用 multiprocessing.pool.Pool 初始化并行处理无限期冻结
- python-3.7 - aiohttp - 如何在类命名空间中保存持久会话
- sql-server - 尝试为变量数据库名称动态删除和恢复
- php - 如何在 Laravel 中启用 CORS?
- perl - 循环 json 文件时“不是数组引用”-Perl
- r - 引用数据表中的列名 =:
- sql - Connect By 子句适用于 11g,但不适用于 Oracle 8i:“ORA-01436:用户数据中的 CONNECT BY 循环”
- checkout - BigCommerce - 自定义运输方式(用于收集位置的 RoyalMail 小部件)
- javascript - 如何正确利用 settimeout 函数用 three.js 旋转立方体