Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium:如何访问Chrome的“可访问性”中的“计算属性”?_Python_Selenium_Selenium Webdriver - Fatal编程技术网

Python Selenium:如何访问Chrome的“可访问性”中的“计算属性”?

Python Selenium:如何访问Chrome的“可访问性”中的“计算属性”?,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,当我检查Chrome中的第二个div时,我看到一个新的计算属性text 1。如何通过此计算属性选择第二个div <html> <body> <div id="a">text 1</div> <div aria-labelledby='a'>text 2</div> </body> </html> 您可以使用browser.find_element_by_xpath//div[text='text

当我检查Chrome中的第二个div时,我看到一个新的计算属性text 1。如何通过此计算属性选择第二个div

<html>
<body>

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

</body>
</html>
您可以使用browser.find_element_by_xpath//div[text='text 1']//following sibling::div


这只是在另一个具有文本属性text 1的div之后检索div。

据我所知,您的目标是通过id和aria labelledby将文本2引用到文本1。 解决方案是通过text 1 text查找元素,获取id属性并使用它搜索具有aria labelledby属性的第二个div:

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}']")

Xpath应该是浏览器。通过Xpath//div[.='text 1']查找\u元素\u的目的是什么?=?简单地使用text,检查nosuchelementException这会给出第一个div,但我希望通过引用text 1获得第二个div,text 1是两个div之间的链接。此Xpath指定text等于text 1。页面上有多个div共享相同的文本值吗?我想获取第二个div,但我唯一拥有的信息是属于另一个div的text 1。两个div都通过一个labelledby链接。这很有意义。更新了我的答案,在这种情况下获得第二个div。谢谢,这是一个很好的解决方案。没有办法通过xpath指令来实现这一点吗?还是硒的内置功能?我简直不敢相信。这是唯一的办法好的,谢谢你的确认。在我的现实生活中,标签由多个ID组成。是否可以以某种方式更改最后一行,即xpath选择labelledby中包含id的所有元素?这很有效。我使用了一个稍微更新的版本,其中包含一个“contained”语句:labeled\u elements=driver.find\u elements\u by\u xpathf//div[contains@aria-标签为“{id}”
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}']")