Asked  7 Months ago    Answers:  5   Viewed   196 times

After searching the web for hours i didnt yet find an answer to my problem. I am using Python 3.6 and i cant import selenium. I always get the message "No module named 'selenium'' I tried everything, i first downloaded selenium from this website https://pypi.python.org/pypi/selenium/3.6.0 .

Then I tried python -m pip install -U selenium and didnt work either. I tried some other things that people said but they didnt work either. Im using windows 10. Any help?

 Answers

74

As you mentioned you are using Python 3.6 following the steps :

  • Open Command Line Interface (CLI) and issue the command python to check if Python is properly installed :

    C:Usersusername>python
    Python 3.6.1 (v3.6.1:69c0db5, Jan 16 2018, 17:54:52) [MSC v.1900 32 bit (Intel)]
     on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
  • Ensure pip is working properly :

    C:Usersusername>pip
    
    Usage:
      pip <command> [options]
    
    Commands:
      install                     Install packages.
      download                    Download packages.
      uninstall                   Uninstall packages.
      freeze                      Output installed packages in requirements format.
      list                        List installed packages.
      show                        Show information about installed packages.
      check                       Verify installed packages have compatible dependencies.
      search                      Search PyPI for packages.
      wheel                       Build wheels from your requirements.
      hash                        Compute hashes of package archives.
      completion                  A helper command used for command completion.
      help                        Show help for commands.
    
    General Options:
      -h, --help                  Show help.
      --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
      -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
      -V, --version               Show version and exit.
      -q, --quiet                 Give less output. Option is additive, and can be used up to 3 times (corresponding to WARNING, ERROR, and CRITICAL logging levels).
      --log <path>                Path to a verbose appending log.
      --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
      --retries <retries>         Maximum number of retries each connection should attempt (default 5 times).
      --timeout <sec>             Set the socket timeout (default 15 seconds).
      --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
      --trusted-host <hostname>   Mark this host as trusted, even though it does not have valid or any HTTPS.
      --cert <path>               Path to alternate CA bundle.
      --client-cert <path>        Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
      --cache-dir <dir>           Store the cache data in <dir>.
      --no-cache-dir              Disable the cache.
      --disable-pip-version-check
                                  Don't periodically check PyPI to determine
                                  whether a new version of pip is available for
                          download. Implied with --no-index.
    
  • Install latest selenium through pip :

    C:Usersusername>pip install -U selenium
    Collecting selenium
      Downloading selenium-3.8.1-py2.py3-none-any.whl (931kB)
        100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 942kB 322kB/s
    Installing collected packages: selenium
    Successfully installed selenium-3.8.1
    
  • Confirm that Selenium is installed :

    C:Usersusername>pip freeze
    selenium==3.8.1 
    
  • Open an IDE (e.g Eclipse, PyCharm) and write a simple program as follows :

    from selenium import webdriver
    
    driver = webdriver.Firefox(executable_path="C:\path\to\geckodriver.exe")
    driver.get('https://stackoverflow.com')
    
  • Execute the program on which Firefox Quantum Browser will be initiated and the url https://stackoverflow.com will be accessed.


Python Download Location (Windows) :

Python (for Windows) can be download from the following location :

https://www.python.org/downloads/
Tuesday, June 1, 2021
 
LukeP
answered 7 Months ago
60

This looks very much like a 32-bit/64-bit issue. If you are running 64-bit Python and you have 32-bit PythonWin you will see this sort of thing. Both win32gui and win32ui are .pyd files (DLLs) and they should live in Libsite-packageswin32 and Libsite-packagespythonwin respectively.

If you can see them there but the import is failing then it is likely they are the wrong bitness. A 64-bit executable cannot load a 32-bit DLL and vice versa, and if you try, in most cases the error message will tell you that the DLL you are trying to load isn't there. Even when you can see that it is.

Edit following exchange of comments with OP:

You will also get this sort of error with PythonWin if you put multiple imports in a single line. Follow PEP-8 and do one import to a line.

Friday, August 20, 2021
 
Óscar López
answered 4 Months ago
22

Note that click() will not do right click, it is context_click()

If you want to right click on based on name, then you can use this code :

ActionChains(driver).context_click(driver.find_element_by_xpath("//a[text()='Luke Wilson']").perform()  

You can try with this also :

action = ActionChains(driver)
action.move_to_element(driver.find_element_by_xpath("//a[text()='Luke Wilson']")).perform();
action.context_click().perform()
Tuesday, August 24, 2021
 
fatihk
answered 4 Months ago
35

As others have noted, that module should be in the standard library, but if it's an embedded device, it may have been dropped to save space (if true, a foolish choice IMO, since leaving out contextlib.contextmanager robs the with statement of much of its power and convenience)

If you can name the specific device or manufacturer (or ask the vendor directly), you may be able to get a better answer.

As far as fixing it goes, grabbing http://hg.python.org/cpython/file/2.6/Lib/contextlib.py and dropping it in sys.path somewhere should do the trick (running python -m site will dump the list of directories that you can use)

Sunday, October 31, 2021
 
Frédéric Hamidi
answered 1 Month ago
77

Selenium is unable to close the active window i.e the newly opened window because practically you havn't switched to the newly opened window in a clean way.

Solution

A few words about Tab/Window switching/handling:

  • switch_to_window(window_name) is deprecated for quite some time now and you need to use driver.switch_to.window
  • Always keep track of the Parent Window handle so you can traverse back later if required as per your usecase.
  • Always use WebDriverWait with expected_conditions as number_of_windows_to_be(num_windows) before switching between Tabs/Windows.
  • Always keep track of the Child Window handles so you can traverse whenever required.
  • Always use WebDriverWait with expected_conditions as title_contains("partial_page_title") before extracting the Page Title.
  • Here is your own code with some minor tweaks mentioned above:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Firefox(executable_path=r'C:WebDriversgeckodriver.exe')
    driver.get("file:///D:/blackhole/print.html")
    parent_han  = driver.window_handles
    driver.find_element_by_link_text('Print').click()
    WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))
    all_han = driver.window_handles
    new_han = [x for x in all_han if x != parent_han][0]
    driver.switch_to.window(new_han)
    driver.close()
    
  • You can find a detailed discussion in Selenium Switch Tabs

Friday, November 12, 2021
 
Gordnfreeman
answered 4 Weeks ago
Only authorized users can answer the question. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :  
Share