Как я могу получить информацию от js сработавших элементов внутри доски Dynami c, используя Selenium - PullRequest
1 голос
/ 02 февраля 2020

Я хочу получить информацию со следующей доски. Плата и вообще вся страница загружаются динамически и работают с триггерами js. Доска является результатом поиска, всякий раз, когда я пытаюсь открыть URL-адрес в новой вкладке, я получаю это about: blank # заблокирован Я не уверен, что делать, потому что я не хочу, чтобы страница быть сброшен Я хочу получить информацию об элементах без обновления. Я действительно запутался, так как понятия не имею, как это сделать, не получив Ошибка повторной отправки формы Спасибо за любую предоставленную помощь!

Элементы, которые я хочу получить: [TEL] [ ИМЯ] [EMAIL]

Сайт, на котором я работаю: Нажмите меня

Это мой код:

enter image description here

for activity in activities:
driver = webdriver.Chrome()
url = 'https://www.ffbatiment.fr/federation-francaise-du-batiment/laffb/annuaire.html?Typ=1&Rs=&SecteurActivite=B%c3%a2timent&Dep=&Acti={}'.format(activity)
print(url)
for department in range(98):
    print('Department: ' + str(department + 1))
    time.sleep(1)
    if int(department) <= 9:
        y = '0' + str(department + 1)
        url1 = 'https://www.ffbatiment.fr/federation-francaise-du-batiment/laffb/annuaire.html?Typ=1&Rs=&SecteurActivite=B%c3%a2timent&Dep={}&Acti={}'.format(y, activity)
        driver.get(url1)
        driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_Button1').click()
        number = 0
        number = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00 > thead > tr.rgPager > td > div.CustomPagerHolder > h2')
        number = number.text.split(':')[1]
        number = int(number)
        if number <= 20:
            for raison in range(20):
               try:
                  print('Works')
                  if rasion < 10:
                      rasionid = '0' + str(raison)
                  else:
                      rasionid = str(raison)
                  rasionname =driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__{} > td:nth-child(1) > a > p'.format(rasionid))
                  print(rasionname.text)
                  tel = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_FormView1_Ent_TelHyperLink')
                  tel = tel.text
                  print(tel)
               except:
                    break
        else:
                for rasion in range(number):
                    if rasion <= 19:
                        rasionname = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__{} > td:nth-child(1) > a > p'.format(rasion))
                        rasionname.click()
                        tel = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_FormView1_Ent_TelHyperLink')
                        tel = tel.text
                        print('Rasion Number : {} [{}] [{}]'.format(rasion + 1, rasionname.text, tel))
                        #tel = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_FormView1_Ent_TelHyperLink')
                        #tel = tel.text
                        #print(tel)
                    elif rasion > 19 and rasion < 40:
                        driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00 > thead > tr.rgPager > td > div.NumericPagerHolder.Pagination > div > a:nth-child(2)').click()
                        rasionnumber = rasion - 20
                        try:
                            rasionname = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__{}"]/td[1]/a/p'.format(rasionnumber))))
                            rasionname.click()
                            tel = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_FormView1_Ent_TelHyperLink').get_attribute('href')
                            tel = tel[4:]
                        except:
                            print("Error")
                        print('Rasion Number : {} [{}] [{}]'.format(rasion + 1, rasionname.text, tel))
                    elif rasion > 39 and rasion < 60:
                      driver.find_element_by_css_selector("#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00 > thead > tr.rgPager > td > div.NumericPagerHolder.Pagination > div > a:nth-child(3)").click()
                      rasionnumber = rasion - 40
                      rasionname = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__{}"]/td[1]/a/p'.format(rasionnumber))))
                      tel = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_FormView1_Ent_TelHyperLink').get_attribute('href')
                      tel = tel[4:]
                      print('Rasion Number : {} [{}] [{}]'.format(rasion + 1, rasionname.text, tel))
                       #// *[ @ id = "ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__0"] /td[1] / a / p
                        #//*[@id="ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__6"]/td[1]/a/p
                        # ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__0 > td:nth-child(1) > a > p
                        ##ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__3 > td:nth-child(1) > a > p
                       # tel = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_FormView1_Ent_TelHyperLink')
                       # tel = tel.text
                       # print(tel)
                    elif rasion > 59 and rasion < 79:
                        driver.find_element_by_css_selector("#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00 > thead > tr.rgPager > td > div.NumericPagerHolder.Pagination > div > a:nth-child(3)").click()
                        rasionnumber = rasion - 60
                        rasionname = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,'//*[@id="ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__{}"]/td[1]/a/p'.format(rasionnumber))))
                        rasionname.click()
                        tel = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_FormView1_Ent_TelHyperLink').get_attribute('href')
                        tel = tel[4:]
                        print('Rasion Number : {} [{}] [{}]'.format(rasion + 1, rasionname.text, tel))
                    elif rasion > 79 and rasion < 99:
                        driver.find_element_by_css_selector("#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00 > thead > tr.rgPager > td > div.NumericPagerHolder.Pagination > div > a:nth-child(3)").click()
                        rasionnumber = rasion - 80
                        rasionname = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,'//*[@id="ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_RadGrid1_ctl00__{}"]/td[1]/a/p'.format(rasionnumber))))
                        rasionname.click()
                        tel = driver.find_element_by_css_selector('#ctl00_ctl00_ContentPlaceHolderGlobal_ContentPlaceHolderContenu_FormView1_Ent_TelHyperLink').get_attribute('href')
                        tel = tel[4:]
                        print('Rasion Number : {} [{}] [{}]'.format(rasion + 1, rasionname.text, tel))

Это ссылка, которую я получаю, когда копирую ее с одного из элементов Raison Sociale

javascript:__doPostBack('ctl00$ctl00$ContentPlaceHolderGlobal$ContentPlaceHolderContenu$RadGrid1$ctl00$ctl04$ctl00','')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...