2016-09-16 2 views
0

Я пытаюсь запустить тесты chrome локально на Mac (El Capitan), однако я не могу запускать тесты локально на chrome, я могу вызвать chrome с помощью удаленного webdriver. Но когда я пытаюсь запустить тесты без удаленного WebDriver т.е. вызывающем хрома непосредственно я получаю ошибкуНе удается запустить тесты selenium на chrome локально на Mac

driver/chrome/webdriver.py", line 62, in __init__ 
    self.service.start() 
    File "/Users/testuser/practise/venv/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 92, in start 
    raise WebDriverException("Can not connect to the Service %s" % self.path) 
WebDriverException: Message: Can not connect to the Service chromedriver 

У меня есть chromedriver двоичный, расположенный в /usr/local/bin и у меня то же самое в моем PATH а.

Selenium Version: selenium (2.53.6) 
Chromedriver Version: 2.24.417412 
Python Version: 2.7.10 

МОЯ образец сценария

# Import unittest module for creating unit tests 
import unittest 

# Import time module to implement 
import time 

# Import the Selenium 2 module (aka "webdriver") 
from selenium import webdriver 

# For automating data input 
from selenium.webdriver.common.keys import Keys 

# For providing custom configurations for Chrome to run 
from selenium.webdriver.chrome.options import Options 


# -------------------------------------- 
# Provide a class for the unit test case 
class PythonOrgSearchChrome(unittest.TestCase): 

    # Anything declared in setUp will be executed for all test cases 
    def setUp(self): 
     # Select which device you want to emulate by uncommenting it 
     # More information at: https://sites.google.com/a/chromium.org/chromedriver/mobile-emulation 
     mobile_emulation = { 

      "deviceName": "Google Nexus 5" 
      # Or specify a specific build using the following two arguments 
      #"deviceMetrics": { "width": 360, "height": 640, "pixelRatio": 3.0 }, 
      #"userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19" } 
     } 

     # Define a variable to hold all the configurations we want 
     chrome_options = webdriver.ChromeOptions() 

     # Add the mobile emulation to the chrome options variable 
     chrome_options.add_experimental_option("mobileEmulation", mobile_emulation) 

     # Create driver, pass it the path to the chromedriver file and the special configurations you want to run 
     self.driver = webdriver.Chrome(chrome_options=chrome_options) 

    # An individual test case. Must start with 'test_' (as per unittest module) 
    def test_search_in_python_chrome(self): 
     # Assigning a local variable for the global driver 
     driver = self.driver 

     # Go to google.com 
     driver.get('http://www.google.com') 

     # A test to ensure the page has keyword Google in the page title 
     self.assertIn("Google", driver.title) 



     # Find and select the search box element on the page 
     search_box = driver.find_element_by_name('q') 

     # Enter text into the search box 
     search_box.send_keys('Cat gif') 

     # Make sure the results page returned something 
     assert "No results found." not in driver.page_source 

     # Submit the search box form 
     search_box.submit() 

     # Can also use Keys function to submit 
     #search_box.send_keys(Keys.RETURN) 

     # Another pause so we can see what's going on 
     time.sleep(5) 

     # Take a screenshot of the results 
     driver.save_screenshot('screenshot-deskto-chrome.png') 

    # Anything declared in tearDown will be executed for all test cases 
    def tearDown(self): 
     # Close the browser. 
     # Note close() will close the current tab, if its the last tab it will close the browser. To close the browser entirely use quit() 
     self.driver.close() 

# Boilerplate code to start the unit tests 
if __name__ == "__main__": 
    unittest.main() 

Я действительно не знаю, что происходит, потому что я могу запустить браузер с помощью дистанционного WebDriver, любая помощь будет принята с благодарностью.

+0

Пытались ли вы последний селен с последним chromedriver? Чтобы избежать проблем, связанных с этим путем, вы можете сохранить их как (селен, так и хромированный) в том же каталоге и запустить оттуда. Иногда у вас могут быть несовместимости между браузером хромирования и браузером Chrome, если браузер будет автоматически обновляться. – lauda

+0

AFAIK запускает последние версии хромированных и селен. То же самое прекрасно работает, когда я вызываю хром, используя удаленный webdriver. Если это была проблема пути, тогда удаленный webdriver тоже должен был жаловаться – sri85

+0

Я думаю, что последний селен 3.0. Пожалуйста, перепроверить и посмотреть здесь мой ответ о том, как запустить селен с хромированным краем http://stackoverflow.com/questions/39468600/how-to-run-tests-in-behat-on-firefox-48-0-using-selenium- автономные-сервер – lauda

ответ

0

Я думаю, я нашел ответ, в моем /etc/hostslocalhost был сопоставлен с чем-то другим, в результате которой я получал

driver/chrome/webdriver.py", line 62, in __init__ 
    self.service.start() 
    File "/Users/testuser/practise/venv/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 92, in start 
    raise WebDriverException("Can not connect to the Service %s" % self.path) 
WebDriverException: Message: Can not connect to the Service chromedriver 
Смежные вопросы