셀레늄의 href 값에 따라 둘 중 하나가 될 수 있는 태그 요소를 기다리는 방법이 있습니까?

카림 나빌

따라서 이것이 실제로 유효한지 확실하지 않지만 셀레늄에서 <a 태그를 기다리는 방법이 있는지 궁금합니다. href 값 또는 태그가 닫힌 후 포함된 텍스트를 기반으로 하는 두 개 중 하나입니다. 내가 하려는 것은 이 페이지의 전원을 켜고 https://www.coingecko.com/en/exchanges 교환 링크를 반복하고 각 링크를 방문한 다음 새로 각 링크의 정보 탭을 클릭하는 것입니다. 추출할 정보가 포함된 열린 페이지. 실제로 코드는 제가 driver.find_element_by_text를 통해 했던 것처럼 StaleElementException과 elementNotFound를 통해 탭을 제대로 식별하지 못했을 때 중반까지 작동했습니다.

문제는 '정보' 탭이 한 페이지에서 다른 페이지로 변경되므로 //ul[@role='tablist']/li[3] 또는 li[2] 중 하나입니다. 그래서 href 값을 기반으로 올바른 요소를 기다렸다가 클릭하십시오. 페이지 href 값의 태그 중 하나에 # about ---> //ul[@role='tablist']/li[3]/a 텍스트가 포함되어 있기 때문입니다.

간단하지 않은 경우 죄송하지만 최근까지 문제가 무엇인지 정확히 지적하려고했습니다. :)

누군가 감사하게도 올바른 방향으로 나를 가리킬 수 있다면 이것은 내가 지금까지 시도한 코드입니다.

from selenium.webdriver import Chrome
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
import time
from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException



webdriver = '/Users/karimnabil/projects/selenium_js/chromedriver-1'

driver = Chrome(webdriver)

num_of_pages = 4
exchanges_list = []
names_list = []
websites_list = []
emails_list = []
years_list = []
countries_list = []
twitter_list = []


for i in range(num_of_pages):

    url = 'https://www.coingecko.com/en/exchanges?page=' + str(i+1)
    driver.get(url)

    links = driver.find_elements_by_xpath("//tbody[@data-target='exchanges-list.tableRows']/tr/td[2]/div/span[2]/a")
    links = [url.get_attribute('href') for url in links]
    time.sleep(0.5)

    for link in links:
        driver.get(link)

        wait = WebDriverWait(driver, 2)
        



        wait.until(EC.text_to_be_present_in_element_value((By.XPATH, "//ul[@role='tablist']/li[position()=2 or position()=3]/a"), '#about'))
       

        try:
            name = driver.find_element_by_xpath("//div[@class='exchange-details-header-content']/div/h1").text
            website = driver.find_element_by_xpath("//div[@class='row no-gutters']/div[8]/a").get_attribute('href')
            email = driver.find_element_by_xpath("//div[@class='row no-gutters']/div[9]/a").get_attribute('href')
            year_est = driver.find_element_by_xpath("//div[@class='row no-gutters']/div[10]").text
            inc_country = driver.find_element_by_xpath("//div[@class='row no-gutters']/div[12]").text
            twitter = driver.find_element_by_xpath("//div[@class='row no-gutters']/div[16]/div[2]/div[2]/a").get_attribute('title')
        except:
            pass
        try:
            print('---------------')
            print('exchange name is : {}'.format(name))
            print('exchange website is : {}'.format(website))
            print('exchange email is : {}'.format(email))
            print('exchange established in year: {}'.format(year_est))
            print('exchange incorporated in : {}'.format(Inc_country))
            print('exchange twitter handle is: {}'.format(twitter))
        except:
            pass

        try:
            names_list.append(name)
            websites_list.append(website)
            emails_list.append(email)
            years_list.append(year_est)
            countries_list.append(Inc_country)
            twitter_list.append(twitter)
        except:
            pass
        

df = pd.DataFrame(list(zip(names_list, websites_list,emails_list, years_list, countries_list, twitter_list)), columns=['Ex_Names', 'Website', 'Support Email', 'Inc Year', 'Inc Country', 'Twitter Handle' ])

CoinGecko2_data = df.to_csv('CoinGecko4.csv', index=False) 
과르디아리오

href를 안다면 다음을 기다리십시오. //a[contains(@href, 'my-href')]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

TOP 리스트

  1. 1

    Ionic 2 로더가 적시에 표시되지 않음

  2. 2

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  3. 3

    std :: regex의 일관성없는 동작

  4. 4

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  5. 5

    java.lang.UnsatisfiedLinkError : 지정된 모듈을 찾을 수 없습니다

  6. 6

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  7. 7

    상황에 맞는 메뉴 색상

  8. 8

    SMTPException : 전송 연결에서 데이터를 읽을 수 없음 : net_io_connectionclosed

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    Windows cmd를 통해 Anaconda 환경에서 Python 스크립트 실행

  11. 11

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  12. 12

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  13. 13

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  14. 14

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  15. 15

    복사 / 붙여 넣기 비활성화

  16. 16

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  17. 17

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  18. 18

    SQL Server-현명한 데이터 문제 받기

  19. 19

    Seaborn에서 축 제목 숨기기

  20. 20

    ArrayBufferLike의 typescript 정의의 깊은 의미

  21. 21

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

뜨겁다태그

보관