我得到一个元素不可见错误:
ElementNotVisibleException: Message: u'Element is not currently visible and so may
not be interacted with'
对于运行此代码时的每个find元素行:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.example.com')
browser.find_element_by_name('username').send_keys('myusername')
browser.find_element_by_name('password').send_keys('mypassword')
browser.find_element_by_class_name('welcomeLoginButton').click()
页面登录部分的HTML如下所示:
<div class='welcomeLoginUsername'>
<div class='welcomeLoginUsernameLabel'><b>Username:</b></div>
<div class='welcomeLoginUsernameInput'><input type='text' name='username' tabindex='1'>
<br><a class='sf' href='javascript: void(0);' onclick='showUsernamePopup();'>
<b>Forgot Username?</b></a>
</div>
</div>
<div class='welcomeLoginPassword'>
<div class='welcomeLoginPasswordLabel'>
<b>Password:</b>
<br><span class='sf'>(It's cAsE sEnSitIvE!)</span>
</div>
<div class='welcomeLoginPasswordInput'>
<input type='password' name='password' tabindex='2'>
<br><a class='sf' href="javascript: void(0);" onclick="showPasswordPopup();">
<b>Forgot Password?</b></a>
</div>
</div>
</div>
<input type="submit" value="" class='welcomeLoginButton' style='border: 0px;
padding: 0px; margin: 0px;) no-repeat;' onclick='document.forms["login"].submit()'>
Selenium与web浏览器的交互方式与用户的交互方式类似。因此,如果有一个html元素不可见,那么最简单的解释是,当您编写selenium代码时,您不会像普通用户那样与web页面交互。
最后,这不是关于网页的html,而是关于DOM和元素的隐藏属性。我建议您下载firebug或其他一些html查看器程序,然后突出显示您要按的按钮。使用html查看器的DOM查找并手动完成登录过程。请注意,要使元素可见以便与之交互,必须执行的操作,然后模拟selenium代码中的相同步骤。
如果您已经做了所有需要做的事情,但是selenium与web页面的交互速度比javascript使元素可见的速度要快,那么您必须在其中编程。
天真的方式:
更可扩展的方式:
相关问题 更多 >
编程相关推荐