首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium:用find_element_by_name输入用户名,如何定位名称?

Selenium:用find_element_by_name输入用户名,如何定位名称?
EN

Stack Overflow用户
提问于 2017-06-23 23:27:35
回答 3查看 1.3K关注 0票数 0

我使用了related question中的一小段代码

username = driver.find_element_by_name("username")

username.send_keys("username")

我查看了登录页面的源代码,发现:HTML snippet

但是,我同时收到关于username = driver.find_element_by_name("Email")和username = driver.find_element_by_name("ember442")的错误。

错误信息为:

代码语言:javascript
运行
复制
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 385, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 791, in find_element
    'value': value})['value']
  File "/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "/anaconda/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"Email"}

我在这里做错了什么?我唯一的其他想法是使用其他命令之一来定位元素(find_element_by_id、find_element_by_name、find_element_by_xpath、find_element_by_link_text、find_element_by_partial_link_text、find_element_by_tag_name、find_element_by_class_name、find_element_by_css_selector),但这些命令似乎也不起作用。

EN

回答 3

Stack Overflow用户

发布于 2017-06-23 23:31:05

这是因为这些都不是元素名称。您应该使用:

代码语言:javascript
运行
复制
username = driver.find_element_by_id("ember442")
票数 1
EN

Stack Overflow用户

发布于 2017-06-23 23:31:28

这是你问题的答案:

对于电子邮件,尝试将xpath作为//input[@id='ember442']

代码语言:javascript
运行
复制
username = driver.find_element_by_xpath("//input[@id='ember442']")
username.send_keys("username")

对于密码,请尝试以//input[@id='ember443']身份使用xpath

代码语言:javascript
运行
复制
username = driver.find_element_by_xpath("//input[@id='ember443']")
username.send_keys("username")

如果这回答了你的问题,请让我知道。

票数 0
EN

Stack Overflow用户

发布于 2017-06-24 00:20:46

明白了!我最终找到了一个related question (尽管是使用Java的)和答案中的一段代码:driver.findElement(By.xpath("//input[@name='name']")),并将其修改为:username = driver.find_element_by_xpath("//input[@placeholder='Email']"‌​)我很想知道如何通过引用id名称(find_element_by_id)来实现这一点,但这是一个特定于任务的问题,所以现在可以用了!

我必须在find_element_by_xpath中指定占位符名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44725060

复制
相关文章

相似问题

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