Selenium Python нажмите ссылку на странице по тексту / стилю - PullRequest
1 голос
/ 19 октября 2019

В настоящее время я смотрю на сайт bet365.com, и я немного застопорился. Страница, которая меня интересует, имеет следующий URL;https://www.bet365.com/#/AS/B2/.

На этой странице перечислены все скачки в текущий день ... Я хочу нажать на одну из этих ссылок. Исходный html может быть найден ниже;

< div class ="slm-RaceMeeting slm-RaceMeeting_Uk " > 
  < div class ="slm-MeetingHeader " > 
    < div class ="slm-MeetingHeader_LeftContainer " > 
      < div class ="slm-MeetingHeader_RaceName " style="" > Ascot < / div > 
< div class ="slm-RaceMeeting slm-RaceMeeting_Uk " > 
< div class ="slm-RaceMeeting slm-RaceMeeting_Uk " > 
< div class ="slm-RaceMeeting slm-RaceMeeting_Uk " > 
< div class ="slm-RaceMeeting slm-RaceMeeting_Uk " > 

Все названия рас заключены в класс = "slm-RaceMeeting slm-RaceMeeting_Uk", но я не могу найти какие-либо кнопки или ссылки, по которым можно щелкнуть, чтобы перейти к нужному собранию (например, перейти квстреча аскота).

Я пробовал следующие клики;

browser.find_element_by_xpath("//*[contains(concat( " ", @class, " " ), concat( " ", "slm- 
MeetingHeader_RaceName", " " ))]") .click()

browser.find_element_by_css_selector('.slm-MeetingHeader_RaceName').click()

... наряду с многочисленными другими попытками и просто не может с этим справиться! Помощь была бы удивительной, очень благодарна

1 Ответ

0 голосов
/ 19 октября 2019

Мне пришлось пройти путь до скачек, а затем использовать xpath, как показано ниже (я собираю все результаты в этом разделе, на которые можно кликать в разное время для Ascot)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

d = webdriver.Chrome()
d.get('https://www.bet365.com/#/AS/B2/')
d.find_element_by_css_selector("a").click()
racing = WebDriverWait(d,5).until(EC.presence_of_element_located((By.XPATH, '//*[@class="wn-Classification " and contains(text(),"Horse Racing")]')))
url = d.current_url

while True:
    racing.click()
    if d.current_url !=url:  #might want to add timeout for this. Also, wait clickable doesn't seem to work. But explicit sleep does.
        break
results = d.find_elements_by_xpath('//*[@class="slm-MeetingHeader_RaceName " and contains(text(),"Ascot")]/ancestor::div[@class="slm-RaceMeeting slm-RaceMeeting_Uk "]//*[@class="slm-UkRacingCouponLink_RaceNameTime "]')
results[0].click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...