首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >硒动态元素Python

硒动态元素Python
EN

Stack Overflow用户
提问于 2020-05-07 01:16:16
回答 3查看 174关注 0票数 0

你好,我使用的是selenium。我必须将密钥发送到此输入。

<input id="209f0c3d-3222-4caa-b55d-1d4463322fd4" type="email" placeholder="E-posta adresi" value="" name="emailAddress" data-componentname="emailAddress" autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false">

代码语言:javascript
复制
<input id="8ccf12d3-e264-43b8-8bbe-70e1f3eef202" type="email" placeholder="E-posta adresi" value="" name="emailAddress" data-componentname="emailAddress" autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false">

例如,每次刷新时,输入id都会改变。如何使用selenium找到这种元素?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-07 01:28:32

您可以通过xpath找到它们

即:

代码语言:javascript
复制
<html>
 <body>
  <form id="loginForm">
</body>
<html>

你可以过得去:

代码语言:javascript
复制
login_form = driver.find_element_by_xpath("/html/body/form[1]")

这里的数字1表示它是第一种形式。在您的情况下,如果您知道表单,您可以使用以下内容(只需更改数字以与您的相匹配。即,如果是第4个输入,则将值更改为4)

代码语言:javascript
复制
driver.find_element_by_xpath("//form[1]/input[1]")

还有另一种选择是在名称、类型和其他一些属性没有改变的情况下,你可以使用(链接它们,使它们指向唯一的元素):

代码语言:javascript
复制
driver.find_element_by_xpath("//input[@name='emailAddress'][@type='email']")

要验证xpath是否可以工作,请尝试web检查器中的搜索框,它接受xpath,如果找到您的元素,那么它也可以在python中工作。

有关更多方法,请参阅https://selenium-python.readthedocs.io/locating-elements.html

票数 2
EN

Stack Overflow用户

发布于 2020-05-07 03:09:55

您可以使用xpath kr css查找元素,其中id或classname不是唯一的。

代码语言:javascript
复制
driver.find_element_by_xpath("//input[@name='emailAddress']")

代码语言:javascript
复制
driver.find_element_by_name('emailAddress')

代码语言:javascript
复制
driver.find_element_by_css_selector("input[name='emailAddress']")

注意:如果属性的组合是唯一的,您也可以进行链接:

代码语言:javascript
复制
driver.find_element_by_xpath("//input[@name='emailAddress'][@type='email']")
票数 1
EN

Stack Overflow用户

发布于 2020-05-07 04:31:30

您可以对输入字段使用任何唯一的选择器: type="email“placeholder="E-posta adresi”value="“name="emailAddress”data-componentname="emailAddress“

xpath:

代码语言:javascript
复制
driver.find_element_by_xpath("//input[@name='emailAddress' and contains(@placeholder, 'E-posta adresi']")

css:

代码语言:javascript
复制
driver.find_element_by_css_selector("input[name='emailAddress'][type='email']")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61641202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档