0
votes

Impossible de cliquer sur l'élément

J'essaie d'automatiser la navigation sur plusieurs pages de listes de médecins. La pièce avec laquelle j'ai des difficultés est de savoir comment obtenir le sélénium de trouver et de cliquer sur la flèche droite qui passe aux pages suivantes de 10 médecins.

J'essaie plusieurs solutions potentielles de Stackoverflow différents pour les derniers jours. et je suis toujours complètement percuté. p>

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
# from selenium.webdriver.common import move_to_element
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction

import time
import sys

browser = webdriver.Chrome('C:/chromedriver.exe')
browser.get('https://connect.werally.com/county-plan-selection/uhc.mnr/zip')


elem_ZipInput = browser.find_element_by_xpath('//*[@id="location"]')
elem_ZipInput.click()
elem_ZipInput.send_keys('80210')
elem_ZipInput.send_keys(Keys.ENTER)
time.sleep(2)

browser.find_element_by_xpath("//button[@track='No Preference']").click()
time.sleep(3)

browser.find_element_by_xpath("//button[@data-test-id='People']").click()
time.sleep(2)

try:
    browser.find_element_by_xpath("//button[@data-test-id='Primary Care']").click()
except:
    browser.find_element_by_xpath("//button[@data-test-id='PrimaryCare']").click()
time.sleep(2)

try:
    browser.find_element_by_xpath("//button[@data-test-id='All Primary Care Physicians']").click()
except:
    browser.find_element_by_xpath("//button[@data-test-id='AllPrimaryCarePhysicians']").click()
time.sleep(2)

elem_PCPList_NextPage = browser.find_element_by_xpath("//i[@class='icon icon_arrow_right']")


ProviderPageTab_Overview = browser.find_element_by_xpath("//*[@id='provider.bioTab']")
ProviderPageTab_Overview.click()
time.sleep(2)


# WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//compare-providers[@class='navigationHeader visible-phone']/div/div/button[@track='next-page']/icon/i"))).click()
# WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div[id='mainContent'] div div header compare-providers[class='navigationHeader visible-phone'] div div button[track='next-page']"))).click()
# WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div[id='mainContent'] div div header div[class='navigationHeader hidden-phone'] div div button[track='next-page'] icon"))).click()
wait = WebDriverWait(webdriver, 10)
wait.until(EC.element_to_be_clickable(By.CSS_SELECTOR,"div[id='mainContent'] div div header div[class='navigationHeader hidden-phone'] div div button[track='next-page'] icon"))


# print(browser.find_element_by_xpath("//i[@class='icon icon_arrow_right']"))
# print(browser.find_element_by_xpath("//button[@aria-label='Next Page']"))
next_Provider = browser.find_element_by_xpath("//compare-providers[@class='navigationHeader visible-phone']/div/div/button[@track='next-page']/icon/i")
#print(//compare-providers[@class='navigationHeader visible-phone']/div/div/button[@track='next-page']/icon/i)

# print(browser.find_element_by_xpath("//button[@track='next-page']"))
# print(browser.find_element_by_xpath("//icon[@type=\"'icon_arrow_right'\"]"))

next_Provider.click()


1 commentaires

s'il vous plaît poster html pertinent


3 Réponses :


2
votes

à Cliquez () sur l'élément souhaité que vous devez induire webDriverwait pour le ollement_to_be_clickable () et vous pouvez utiliser l'un ou l'autre des Suivant Stratégies de localisateur :

  • en utilisant css_selector : XXX

  • en utilisant xpath : XXX

  • note : Vous devez ajouter les importations suivantes: XXX


1 commentaires

@ MADDER12358 J'ai vu que vous avez eu plusieurs essais de code utiles pour analyse. Pouvez-vous essayer une fois avec ma solution et me contacter avec le statut s'il vous plaît?



0
votes

Les suivants ont fonctionné pour moi -

next_page_btn = browser.find_element_by_xpath("//button[@track='next-page']")
next_page_btn.click()
time.sleep(2)


0 commentaires

0
votes

premier élément de contrôle visible sur la page ou non après cela cliquez sur cet élément Voici le code d'exemple:

WebDriverWait wait= new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOf("path of the element"));
browser.find_element_by_xpath("path of the element").click();


0 commentaires