使用selenium访问嵌套html代码中的元素

时间:2017-04-01 11:34:44

标签: python selenium

我正在尝试使用selenium在我的网站上输入我的用户名和密码,但它会进入超时异常。

File "C:\Python34\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

我尝试使用下面的代码访问我的用户名(div id“Id”和密码(div id“PSD”)

user = driver.find_element_by_id('Id')

user = WebDriverWait(driver,20).until(lambda driver:driver.find_element_by_id('Id'))

非常感谢任何帮助

网站的HTML代码如下所示:

<div id="wrapper">
<div id="panel">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tbody>
<tr>
<td>
<div class="panel_23">
<div id="msg" class="txt_red" style="display:none"></div>
   <div class="User">
   <div id="Id">
     <input id="Malcom" name="Malcom" 
     style="width: 23px;" type="text"/>
    </div>
    </div>
    <div class="PSS">
    <div id="PSD">
    <input id="Xmen" name="Xmen" style="width: 23px;" 
    type="pass"/>
    </div>
    </div>
<!-- <div class="txt56">Are you Logged </div> <div class="checkbox">
<input type="checkbox" id="c1" name="cc" /><label for="c1"><span></span>
</label></div> -->
</div>
</td>
</tr>
<tr>
<tr>
</tbody>
</table>
</div>

1 个答案:

答案 0 :(得分:0)

由于您正在使用tee logfile.txt,您收到TimeoutException

使用显式等待:

Explicit Wait

另一件事是您访问user = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.ID, "Malcom")) user.send_keys("username") 代码而不是div代码来访问用户名。要传递用户名,您必须访问用户名字段的input标记。

已更新:

您在input下的登录表单内容最适合您需要切换到框架,然后使用以下代码发送用户名和密码:

iFrame

注意:请按照Python检查语法。我已经使用java完成了它,并且它在我的最后工作正常