2012-09-03 8 views
7

Witam Używam Selenium Standalone Server wraz z programem Selenese Executor do testowania w Safari na Mac OS X. Im problemy z klikaniem niektórych przycisków na konkretnych stronach. Te same kliknięcia działają doskonale w innych przeglądarkach, takich jak firefox (Windows), chrome (Windows + Mac), IOS symulatory, IE. Również jestem w stanie uzyskać przycisk poprzez id.Potwierdzone przez uzyskanie tekstu przycisków za pomocą: getText(). Po kliknięciu polecenia nic się nie dzieje. Próbowałem użyć button.click(), button.submit(). użył również id, xpath, class, aby znaleźć przycisk. Jak już wspomniałem: jestem w stanie uzyskać identyfikator, tylko, że kliknięcie nie działa. jakieś sugestie? część kodu to:Niektóre kliknięcia nie działają w przeglądarce Safari przy użyciu autonomicznego serwera selenowego

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; 
    } 

Czy istnieje sposób obejścia tego problemu w wierszu polecenia? Czy cokolwiek innego, co mogę spróbować lub czego brakuje? Proszę pomóż.

+0

Ja także przed ten sam problem. Dzieje się to zarówno na safari Windows, jak i na Macu. –

Odpowiedz

0

Spróbuj użyć javascript wykonawcę

WebElement yourelement= driver.findElement(By.id("btn")); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", yourelement); 
0

miałem ten sam problem. Po długim czasie debugowania okazało się, że problem polegał na tym, że JS nie był w pełni załadowany, zanim Safari to zrobiło, więc musiałem długo czekać po pageload przed wykonaniem testu.

Po stronie serwera wykonano przycisk (komponent reagowania), ale funkcja przycisku została zaimplementowana, gdy dokument był gotowy.

0

miałem ten sam problem z Safari 10+ OSX El Capitan i selen 3.0.1

Inną alternatywą może być wysłanie klawisz ENTER wdrożone w Pythonie:

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) 
Powiązane problemy