Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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 使用selenium访问嵌套html代码中的元素_Python_Selenium - Fatal编程技术网

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

Python 使用selenium访问嵌套html代码中的元素,python,selenium,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: 我尝试使用下面的代码访问我的用

我试图使用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')

任何帮助都将不胜感激

网站的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>

由于您使用的
显式等待
,您将获得
TimeoutException

将显式等待用作:

user = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.ID, "Malcom"))  

user.send_keys("username")
另一件事是,您正在访问
div
标记而不是
input
标记以访问用户名。要传递用户名,您必须访问用户名字段的
input
标记

更新:

您的登录表单内容显示在
iFrame
下,因此首先需要切换到框架,然后使用以下代码发送用户名和密码:

driver.get("http://xxxxxxxxxxxxxxxx")
driver.implicitly_wait(10)
driver.switch_to.frame(0)   # frame located with index
driver.find_element_by_id("ext1").send_keys("username")
driver.find_element_by_id("ext2").send_keys("password")
driver.find_element_by_xpath("//div[@class='btn_Login']/input").click()

注意:请按照Python检查语法。我已经使用java完成了这项工作,并且在我这方面工作得很好

由于您使用的是
显式等待,因此您得到了
TimeoutException

将显式等待用作:

user = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.ID, "Malcom"))  

user.send_keys("username")
另一件事是,您正在访问
div
标记而不是
input
标记以访问用户名。要传递用户名,您必须访问用户名字段的
input
标记

更新:

您的登录表单内容显示在
iFrame
下,因此首先需要切换到框架,然后使用以下代码发送用户名和密码:

driver.get("http://xxxxxxxxxxxxxxxx")
driver.implicitly_wait(10)
driver.switch_to.frame(0)   # frame located with index
driver.find_element_by_id("ext1").send_keys("username")
driver.find_element_by_id("ext2").send_keys("password")
driver.find_element_by_xpath("//div[@class='btn_Login']/input").click()

注意:请按照Python检查语法。我已经使用java完成了这项工作,并且在我这边工作得很好

您可以提供您正在尝试刮取的网站吗?您可以提供您正在尝试刮取的网站吗?嗨,Narendra,它不工作,仍然是相同的超时异常。尝试使用By.NAME方式,但仍然是l相同。@Narendra我使用了user=WebDriverWait(driver,10)。直到(EC.visibility\u of_element\u located((By.ID,“Malcom”))和user=WebDriverWait(driver,10)。直到(EC.visibility\u of_element\u located((By.NAME,“Malcom”))我觉得我的元素无法被检测到。我还替换了“可见性”到“存在”,但没有用Hi Narendra..有什么想法吗..你想登录吗?因此你的元素出现在
iframe
下,因此首先你需要使用
driver在frame下切换。切换到.frame(0)
然后输入用户名和密码Hi Narendra,它不起作用,仍然是相同的超时异常。尝试使用By.NAME方式,但仍然是一样的。@Narendra我使用这些user=WebDriverWait(driver,10)。直到(EC.visibility\u of_element_located((By.ID,“Malcom”))和user=WebDriverWait(driver,10)。直到(EC.visibility\u of_element\u located((By.NAME,“Malcom”))我觉得我的元素无法被检测到。我还将“visibility”替换为“presence”“但是没有用Hi Narendra..知道吗..你想正确登录吗?因此你的元素出现在
iframe
下,因此首先你需要使用
驱动程序在frame下切换。切换到.frame(0)
,然后输入用户名和密码。”