Селен: Как я могу получить доступ к «вычисленным свойствам» в «Доступности» Chrome? - PullRequest
0 голосов
/ 28 сентября 2019

Когда я проверяю второй div в Chrome, я вижу новое вычисляемое свойство "текст 1".Как я могу выбрать второй div по этому вычисленному свойству?

<html>
<body>

<div id="a">text 1</div>
<div aria-labelledby='a'>text 2</div>

</body>
</html>

Я пытался без успеха

element = browser.find_element_by_xpath("//div[@'text 1']")

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Как я понял, ваша цель получить <div aria-labelledby='a'>text 2</div> ссылку на <div id="a">text 1</div> от id и aria-labelledby .
Решение состоит в том, чтобы найти элемент по text 1 text, получить атрибут id и использовать его для поиска второго div с атрибутом aria-labelledby :

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

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

driver.get("some url")

id = wait.until(ec.visibility_of_element_located((By.XPATH, "//div[.='text 1']"))).get_attribute("id")
text2 = driver.find_element_by_css_selector(f"div[aria-labelledby='{id}']").text
# text2 = driver.find_element_by_xpath(f"//div[@aria-labelledby='{id}']").text
labelled_elements = driver.find_elements_by_xpath(f"//div[@aria-labelledby='{id}']")
0 голосов
/ 29 сентября 2019

Вы можете использовать browser.find_element_by_xpath("//div[text()='text 1']")//following-sibling::div

Это просто возвращает div после другого div с текстовым свойством text 1.

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