我有以下HTML
<button name="_eventId_confirmed" class="btn btn-green margin-bottom-20 bold medium" autofocus="">
和以下Python
btn = driver.find_element_by_name('_eventId_confirmed')
运行此代码将返回错误
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [name="_eventId_confirmed"]
在这种无效的HTML /代码组合之前,我具有以下HTML元素:
<input name="registration" id="registration" class="size-28" maxlength="7" autofocus="" autocomplete="off" type="text" data-original-title="" title="" style="">
我成功访问过的
elem = driver.find_element_by_name("registration")
为什么第二个起作用但第一个不起作用?
编辑:问题是打开了一个新窗口,我需要切换窗口处理程序。所以,虚惊一场。谢谢大家。
答案 0 :(得分:1)
“标签名称”与“名称”不同。前者是指HTML元素的标记名,而后者是指HTML元素的“名称”属性。
例如,在您的第一个HTML代码段中,
<button name="_eventId_confirmed" class="btn btn-green margin-bottom-20 bold medium" autofocus="">
button
是标签名称,而_eventId_confirmed
是(属性)名称。
答案 1 :(得分:1)
这可能是由于您在评论中提到的方式对话。试试
driver.switchTo().frame("ModalFrameTitle");
或
driver.switchTo().activeElement()
答案 2 :(得分:1)
您可以使用window_handles
和switch_to_window方法来做到这一点。
在单击按钮之前,窗口句柄为
window_before = driver.window_handles[0]
elem = driver.find_element_by_name("registration")
单击按钮后,新打开的窗口的窗口句柄为
window_after = driver.window_handles[1]
然后执行切换至窗口方法的方法,以移至新打开的窗口
driver.switch_to.window(window_after)
driver.find_element_by_name("_eventId_confirmed").click()
希望获得帮助。