11

こんにちは、Mac OS X の Safari でテストするために、Selenium Standalone Server と Selenese コマンド エグゼキュータを使用しています。特定のページでいくつかのボタンをクリックする際に問題に直面しています。同じクリックは、firefox (Windows)、chrome (Windows + Mac)、IOS シミュレーター、IE などの他のブラウザーでも完全に機能します。getText() を使用してボタンのテキストを取得することにより、id.Confirmed を介してボタンを取得することもできます。唯一のことは、クリックコマンドの後に何も起こらないことです. 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

2

私も同じ問題を抱えていました。長時間のデバッグの後、Safari がバインディングを行う前に JS が完全にロードされていないことが問題であることがわかりました。

サーバー側でボタン(reactコンポーネント)をレンダリングしましたが、ボタンの機能はドキュメントの準備ができたときに実装されました。

于 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 に答える