硒试验中如何选择第一个锂元素?

2024-04-28 16:45:28 发布

您现在位置:Python中文网/ 问答频道 /正文

标签的结构如截图所示

enter image description here

我正试图使用此python代码访问第一个li元素:

invitations = elem.find_element_by_css_selector('members-holder li#invitation-holder > :first-child')

elem是一个非常顶级的元素,它包含所有的标记

我有个例外:

NoSuchElementException: Message: Unable to locate element: {"method":"css selector","selector":"members-holder li#invitation-holder > :first-child"}

我试过一些变化,但没有得到我想要的结果。选择上述元素的最佳方法是什么?

编辑

我在chrome的开发人员控制台中尝试了另一种css选择器.members-holder .invitation-holder:first-child,它工作正常。但是当我将它插入python selenium代码时,会抛出同样的异常。


Tags: 代码child元素li标签element结构selector
2条回答

首先,您应该修复CSS选择器:

.members-holder ul li.invitation-holder

而且,由于您需要第一个li,只需使用^{} method

driver.find_element_by_css_selector('.members-holder ul li.invitation-holder')

除此之外,您可能还需要e xplicitly wait for the element to become visible

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

...
element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.CSS_SELECTOR, ".members-holder ul li.invitation-holder"))
)

如果在尝试访问元素时仍然会遇到异常,请检查元素是否在iframe中-如果是,请首先切换到它:

frame = driver.find_element_by_id('frame_id')
driver.switch_to.frame(frame)

# find the element

尝试用这种方式识别元素。

WebElement parentDiv = driver.findElement(By.className("'members-holder"));

现在做

WebElement ul = parentDiv.findElement(By.tagName("ul"));
List<WebElement> lis = ul.findElements(By.tagName("li"));

第一个元素是

lis.get(0);

这是java代码。你可以用python来锻炼equilent。 希望有帮助。

相关问题 更多 >