0

J'ai exécuté le code suivant et je m'attends à ce qu'il ouvre une nouvelle URL (page d'accueil google) dans un nouvel onglet quand il répond à la condition (ouvrir une nouvelle URL de page google) parfois alors son jeté une exception.Python Selenium affiche OS Erreur

Voici mon code.

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 
import socket 
from datetime import datetime 

try: 


    options =webdriver.ChromeOptions() 
    options.add_argument('--ignore-certificate-errors') 
    options.add_argument('--ignore-ssl-errors') 
    driver = webdriver.Chrome(chrome_options=options, executable_path ="C:/Users/gsssaaaa/Desktop/Python/exe.win-amd643.6/selenium/chromedriver.exe",port=80) 

    driver.get('file:///C:/Users/gsssaaaa/AppData/Local/Temp/Temp1_site.zip/site/index.html') 

    time.sleep(30) 

    ticketopened = False 
    while True: 

     if driver.find_element_by_class_name('custom-select').text == "Ready": 
      time.sleep(0.5) 

      if driver.find_element_by_class_name('custom-select').text == "Talking": 
       if ticketopened == False: 

        window = 0 
        driver.execute_script("$(window.open('https://www.google.com'))") 
        driver.switch_to_window(driver.window_handles[window]) 
        window = window + 1 

        ticketopened = True 
        continue 
       else: 
        ticketopened = False 
      else: 
       continue 
     else: 
      continue 

except Exception as e: 
    print('Exception Occured: ',e) 
    print('Time and Date: '+str(datetime.now())[0:19]) 

Voici mon message d'erreur:

OSError: [WinError 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted

Je ne suis pas vraiment au courant des ports. S'il s'agit d'un problème de port, pourriez-vous me dire comment utiliser les ports en python et où l'utiliser dans mon code pour éviter cette exception.

Pouvez-vous m'aider à ce sujet?

+0

Essayez d'utiliser 'Firefox webdriver' . Cela peut résoudre votre problème. Je me souviens avoir lu quelque part que Chrome permet l'utilisation de seulement 1 port. Voilà à quoi cela ressemble. –

+0

Salut, dans mon cas, j'utilise un lien particulier et je ne peux pas ouvrir ce lien dans un autre navigateur, sauf Chrome. Y at-il un autre moyen de le réparer? – Shaik

+0

Trouvé cas similaire ici: [Webdriver ouvre des milliers de connexions] (https://github.com/seleniumhq/selenium/issues/3457) –

Répondre

0

Je pense qu'il y a un petit écart dans la manipulation des fenêtres. Pour ouvrir un nouvel onglet/fenêtre et basculer vers celui-ci, indiquez un peu de WebDriverWait et utilisez ensuite l'index pour passer à la nouvelle fenêtre. Voici le bloc de code exemple pour ouvrir https://www.google.co.in, imprimez la Page Title, cliquez sur Gmail lien et l'ouvrir dans un nouvel onglet et switch_to le nouvel onglet/fenêtre et enfin imprimer la Page Title:

driver.get('https://www.google.co.in') 
print("Page Title is : %s" %driver.title) 
link = driver.find_element_by_link_text('Gmail') 
driver.execute_script('arguments[0].target="_blank";', link) 
link.click() 
wait = WebDriverWait(driver, 5) 
wait.until(EC.number_of_windows_to_be(2)) 
driver.switch_to.window(driver.window_handles[-1]) 
wait.until(EC.title_contains("Gmail")) 
print("Page Title is : %s" %driver.title)