我正在使用Java上的“ Selenium”库来编写脚本来执行在线任务。在facebook,youtube等网站上,它运行良好。由于某些原因,在此网站中,它不是:Kingdoms.com。 我要单击的按钮具有以下代码行:
<a data-mellon-iframe-url="/authentication/login" id="loginButton" data-selector="#mellonModal" class="jqFenster"><button> <span>Entrar</span></button></a>
我为此编写的代码是:
driver.findElement(By.id("loginButton")).click();
它不会单击。但是,如果我打印此行:
System.out.println(driver.findElement(By.id("loginButton")).getText());
它显示“ Entrar”,因此脚本知道该按钮,但是由于某种原因它不会单击它。
有什么主意吗?我尝试在单击之前将脚本置于睡眠状态3秒钟,以防按钮未按时加载,但无法解决问题...
答案 0 :(得分:1)
实际上,锚标签隐藏在按钮标签的后面。您需要单击锚标记内的按钮。我尝试使用CSS选择器,并且可以使用
driver.findElement(By.cssSelector("#loginButton button").click()
添加等待按钮,然后点击
driver.get("https://www.kingdoms.com/");
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement loginBtn= wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#loginButton button")));
loginBtn.click();