Вернуть xpath элемента, найденного другими способами - PullRequest
0 голосов
/ 25 июня 2019

Я использую селен в python для извлечения информации из базы данных сайта.Информация появляется в таблице в модальном окне.К сожалению, каждый раз, когда таблица всплывает, она заполняет данные, что означает, что все в таблице имеет динамический путь xpath, поэтому я не могу использовать это для поиска элементов.Вот как выглядит таблица: модальная таблица

Мне удалось найти «имя клиента» (3-й столбец), потому что имя связано с гиперссылкой, поэтому я мог использовать href, но я по-прежнемунеобходимо также получить значение из столбца «коммунальная компания» (7-й столбец).

Вот xpath для каждого из этих элементов:

Имя клиента: // * [@ id = "1561479354688-0-uiGrid-00CA-cell"] / div / a

Коммунальная компания: // * [@ id = "1561479354688-0-uiGrid-00CG-cell"] / div

Хорошая новость заключается в том, что все, кроме большого 13-значного числа, остается постоянным.Я надеюсь, что смогу каким-то образом вырезать это 13-значное число из имени клиента и использовать его для создания xpath компании Utility.Ближайший ответ на этот вопрос я смог найти здесь: Webdriver.Как получить xpath найденного элемента?

Но я не могу понять, как адаптировать это к моему коду.Вот мой фрагмент:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


#open Base account for first entry on list
block = WebDriverWait(driver,10)
block.until(EC.visibility_of_element_located((By.CLASS_NAME, "modal-content")))
driver.switch_to.active_element
Customers = driver.find_elements_by_xpath('//a[contains(@href, "futuresimple")]')

#Customer.click()
for e in Customers:
    print(e.text)
#    Utility = inputElement.find_element_by_xpath('./preceding-sibling::')

Customers[0].click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...