11

嗨,我正在使用 Selenium Standalone Server 和 Selenese 命令执行器在 Mac OS X 上的 Safari 上进行测试。我在单击特定页面上的某些按钮时遇到问题。相同的点击在其他浏览器中完美运行,如 firefox(Windows)、chrome(Windows+Mac)、IOS 模拟器、IE。我也能够通过 id 获取按钮。通过使用 getText() 获取按钮文本来确认。唯一的事情是单击命令后没有任何反应。我尝试过使用 button.click() 、 button.submit()。还使用 id、xpath、class 来查找按钮。正如我所提到的:我能够获得 id,只是点击不起作用。有什么建议么?一些代码是:

public static WebDriver getSafariDriver()
    {
        try
        {
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setBrowserName("safari");
            capabilities.setJavascriptEnabled(true);
            CommandExecutor executor = new SeleneseCommandExecutor(new URL("http://localhost:4444/"), new URL("http://www.google.com/"), capabilities);
            WebDriver driver = new RemoteWebDriver(executor, capabilities);
            return driver;
        } catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
        return null;
    }

通过命令提示符有什么解决方法吗?或者我可以尝试或错过的其他任何东西?请帮忙。

4

3 回答 3

4

尝试使用 javascript 执行器

WebElement yourelement= driver.findElement(By.id("btn"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", yourelement);
于 2014-12-29T12:12:21.950 回答
2

我有同样的问题。经过长时间的调试,我发现问题是在Safari进行绑定之前JS没有完全加载,所以我不得不在页面加载后等待很长时间才能进行测试。

我在服务器端渲染了按钮(反应组件),但按钮的功能是在文档准备好时实现的。

于 2016-05-14T07:40:29.127 回答
2

我在 Safari 10+、OSX El Capitan 和 Selenium 3.0.1 上遇到了同样的问题

另一种选择可能是发送一个用 Python 实现的 RETURN 键:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Safari()
driver.get('http://localhost:8000')
element = driver.find_element_by_id("submit")
element.send_keys(Keys.RETURN)
于 2016-11-02T15:00:58.463 回答