java - Selenium 按钮点击不起作用

标签 java selenium selenium-firefoxdriver

我正在开发具有用户身份验证模块的cloudbase项目。可以使用用户凭据以及使用 OAuth 身份验证对系统进行用户身份验证。

我正在使用 Selenium 自动执行此操作,但是当我尝试单击“登录”按钮时它不起作用,

    @BeforeTest
    public void setUp() 
    {
        driver = new FirefoxDriver();
        driver.get("Application URL");
        driver.manage().window().maximize();

    }

    @Test
    public void enterCredentials() 
    {
        driver.findElement(By.id("cred_userid_inputtext")).sendKeys("email address");
        driver.findElement(By.id("cred_password_inputtext")).sendKeys("password");
        driver.findElement(By.id("cred_sign_in_button")).click();
}

我已经尝试使用 sendKeys(Keys.ENTER)sendKeys(Keys.RETURN)

还尝试使用操作

{
WebElement signIn_button = driver.findElement(By.id("cred_sign_in_button"))

Actions enterSignIn = new Actions(driver);
enterSignIn.moveToElement(signIn_button);
enterSignIn.click();
enterSignIn.perform();
}

最佳答案

出于某种原因,在某些页面上 Firefox 似乎需要对 Click() 进行特殊处理。我是这样解决的(在C#中,但Java应该类似):

// special workaround for the FirefoxDriver
var actions = new Actions(driver);

actions.MoveToElement(element);

ToolBox.DisableTimeout(testParams);
actions.Release().Build().TryPerform();
ToolBox.EnableTimeout(testParams);

actions.MoveToElement(element);
actions.Click().Build().Perform();

说明:我在调用 Click() 之前显式调用 Release()。有时是必要的,有时则不是。如果没有必要,那么调用 Release() 最终会等待隐式超时(如果有的话)结束,然后引发异常。这就是为什么我在调用 Release() 时暂时禁用超时,也是为什么我将其包装在 TryPerform() 方法中,以便忽略异常。看一下我的 TryPerform() 方法:

public static bool TryPerform(this IAction action)
{
    try
    {
        action.Perform();
    }
    catch (Exception)
    {
        return false;
    }

    return true;
}

我知道,Java 中没有扩展方法,但你也许可以类似地解决这个问题。

关于java - Selenium 按钮点击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894084/

相关文章:

java - java连接sqlite数据库的问题

java - 是 :url (in Struts2) not do url-rewriting like c:url does in case cookies are disabled?

selenium - 选择文本并执行单击操作

javascript - 如何测试 window.print() 是否未被覆盖?

python - 如何在同一 session 中将 selenium webdriver 从 headless 模式设置为正常模式?

c# - Selenium force driver.Quit 忽略 "asking to leave"对话框

java - Spring AMQP 由于未确认的消息而卡住队列

java - 哪个 LayOut Manager 最适合我的 GUI?

node.js - WebDriverJs 的 getPageSource 为我提供了一个对象而不是页面的源

java - 如何使用selenium从谷歌翻译获取翻译后的文本?