Python+Selenium:在这种情况下,哪个“find_element_by”替代套件?

2024-10-01 09:26:51 发布

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

我对硒非常陌生,试图找出在这种情况下“通过……找到元素”是最好的选择

<input _ngcontent-wsq-c70="" type="text" formcontrolname="username" onfocusrestaurantcolor="" class="form-control form-input ng-dirty ng-touched ng-invalid is-invalid" placeholder="username" style="border-color: rgb(206, 212, 218); box-shadow: unset;">

我已经尝试过的: element=driver。按\u名称(“//input[@type='text']”)查找\u元素

——>;selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“方法”:“css选择器”,“选择器”:“[name=“//输入[@type='text']””]”}


Tags: textform元素inputtypeusername情况选择器
2条回答

使用以下命令xpath

 driver.find_element_by_xpath("//input[@type='text'][@formcontrolname='username']") 

您可以使用不同的选择器,我通常使用smth,如下所示:

el = driver.find_element(By.XPATH, selector)

由。是具有所提供选择器类型数量的类工厂:

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

您可以在此处使用css选择器或xpath:

el = driver.find_element(By.XPATH, "//input[@class='form-control form-input ng-dirty ng-touched ng-invalid is-invalid']")

el = driver.find_element(By.CSS_SELECTOR, "input.form-control.form-input.ng-dirty.ng-touched.ng-invalid.is-invalid")

el = driver.find_element(By.XPATH, "//input[@placeholder='username'")

这主要取决于你更喜欢什么,或者有时更灵活地使用什么

在开发过程中,您甚至可以与开发人员协作,并使用自定义属性使元素更独特

相关问题 更多 >