当我选择一个网络元素内的网络元素时,它会返回所有网络元素,而不是Selenium中网络元素内的网络元素

nxowjjhe  于 2023-02-12  发布在  其他
关注(0)|答案(1)|浏览(147)

我使用Selenium和Python
嗨,伙计们,我正在做webscraping在拉丁美洲航空公司的网页上,当我试图找到一个webelement内的元素,剪贴板扔给我所有的元素,而不仅仅是该webelement内的元素
在本例中,我将每个月放入“a”变量中,并且只选择实际出现在图像上的三个月,尽管“a”有5个元素,即图像上3之前和之后的2个月,顺便说一句,当我打印文本的5个元素,它tehre是两个null和3个文本,这是月份出现在图像上。在只选择了我想删除的webelement之后,这些webelement就是天,在这个例子中,我在第一个月删除了其中的webelement,但是它最终把每个webelement都扔给了我(我也尝试了ID和其他)153个元素,而我只需要“a”或块中的31个元素。

a  = driver.find_elements(By.XPATH, "//table[@class='CalendarMonth_table CalendarMonth_table_1']")
len(a)

5

a = a[1:4]

[<selenium.webdriver.remote.webelement.WebElement (session="9f1eb3d17f3d7e200004db0994fc2ef0", element="0676bf58-035b-4d63-b8d0-61645432d571")>,
 <selenium.webdriver.remote.webelement.WebElement (session="9f1eb3d17f3d7e200004db0994fc2ef0", element="55618f44-965b-4f70-8bb5-53a7976f674a")>,
 <selenium.webdriver.remote.webelement.WebElement (session="9f1eb3d17f3d7e200004db0994fc2ef0", element="cfd6186a-1301-4b09-a595-91ede08f6387")>]

a = a[0]

b = a.find_elements(By.XPATH, "//td[@tabindex='-1']")
len(b)
153

透镜(B)应该只有31个元素而不是153个。
正如您在上面看到的,我试图找到要从中提取元素/日期的元素/块,但没有成功

pjngdqdw

pjngdqdw1#

当使用XPath从元素(a)中查找元素(B)时,需要在XPath的开头添加一个.“”,

b = a.find_elements(By.XPATH, ".//td[@tabindex='-1']")
                               ^ dot goes here

这告诉XPath从该元素开始搜索,而不是从DOM的顶部开始搜索。

相关问题