Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Selenium:输入用户名并按名称查找元素,如何查找名称?_Python 3.x_Selenium Webdriver - Fatal编程技术网

Python 3.x Selenium:输入用户名并按名称查找元素,如何查找名称?

Python 3.x Selenium:输入用户名并按名称查找元素,如何查找名称?,python-3.x,selenium-webdriver,Python 3.x,Selenium Webdriver,我正在使用一段来自 username=driver。通过名称(“用户名”)查找元素 username.发送密钥(“用户名”) 我查看了登录页面的源代码,发现: 然而,这两方面我都有错误 用户名=驱动程序。通过名称(“电子邮件”)查找元素 及 用户名=驱动程序。通过名称(“ember442”)查找元素 错误显示: Traceback (most recent call last): File "<stdin>", line 1, in <module> Fil

我正在使用一段来自

username=driver。通过名称(“用户名”)查找元素

username.发送密钥(“用户名”)

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

然而,这两方面我都有错误 用户名=驱动程序。通过名称(“电子邮件”)查找元素 及 用户名=驱动程序。通过名称(“ember442”)查找元素

错误显示:

  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"}
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/anaconda/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,第385行,按名称查找元素
返回self.find_元素(by=by.NAME,value=NAME)
文件“/anaconda/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,第791行,在find_元素中
'value':value})['value']
文件“/anaconda/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,执行中第256行
self.error\u handler.check\u响应(响应)
文件“/anaconda/lib/python3.6/site packages/selenium/webdriver/remote/errorhandler.py”,第194行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“名称”,“选择器”:“电子邮件”}
我做错了什么?我唯一的其他想法是使用其他命令之一来定位元素(按元素id查找元素), 按名称查找元素, 通过xpath查找元素, 通过链接文本查找元素, 通过部分链接文本查找元素, 通过标记名称查找元素, 通过类名称查找元素,
通过_css _选择器)查找_元素_),但这些似乎也不起作用

这是因为这些都不是元素名。你应使用:

username = driver.find_element_by_id("ember442")

以下是你问题的答案:

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

username = driver.find_element_by_xpath("//input[@id='ember442']")
username.send_keys("username")
username = driver.find_element_by_xpath("//input[@id='ember443']")
username.send_keys("username")
有关密码,请尝试xpath作为
//输入[@id='ember443']

username = driver.find_element_by_xpath("//input[@id='ember442']")
username.send_keys("username")
username = driver.find_element_by_xpath("//input[@id='ember443']")
username.send_keys("username")

如果这能回答您的问题,请告诉我。

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


TLDR;我必须在
find_element_by_xpath

中指定占位符名称,错误在于您没有学习如何使用selenium。您只是复制和粘贴代码。如果要搜索的代码有名称,则使用
find_element_by_name
。您的html元素有名称吗?您必须问自己:你要搜索的东西的唯一性是什么?名称?id?链接文本?弄清楚这一点,然后阅读文档,找到一种方法,让你搜索唯一的信息。我想这就是“占位符=\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu意思是..谢谢你的回答,我会尝试一下!大约1.5个小时后…从一个相关的Java问题中,我找到了一些代码:
driver.findelelement(By.xpath(//input[@name='name']);
并将其修改为
username=driver.find_element_By_xpath(//input[@placeholder='Email'])
谢谢您的回复。我肯定是在“复制和粘贴代码”这里…但我正试图用一种半智能的方式来做这件事,现在我正在尽我最大的努力学习…如果你有id,为什么你推荐
通过xpath查找元素?
为什么不
通过id查找元素?
?尝试了一下,也得到了一个错误:selenium.common.exceptions.NoSuchElementException:Message:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//input[@id='ember442']”@BryanOakley人们经常观察到,虽然元素(如我们讨论中的元素)似乎具有唯一的
id
,但在某些情况下,当
id
input
span
标记一起时,Selenium在轮询HTML DOM时找不到它。因此,为了使搜索更容易,我们尝试传递预期的
tag
name到
xpath
以缩小搜索范围。Thanks@willyd检查两件事。1)检查表单是否在
iframe
中,在这种情况下,必须先切换到框架,然后定位元素。2.如果页面包含JavaScripts或AJAX调用,则首先会导致
输入
元素的
可点击
。更新我的状态。感谢您的解答,请参阅原始帖子上的评论。谢谢我正是这样尝试的,并得到了一个类似的错误:selenium.common.exceptions.NoSuchElementException:Message:没有这样的元素:无法定位元素:{“method”:“id”,“selector”:“ember442”}尝试让元素存在于DOM中。如果元素有id,它应该可以工作。综合考虑,假设您的id是唯一的,那么按id搜索是最可靠的。