Javascript Python selenium-如何在动态网站上找到登录元素;s仅通过检查元件可见
我正试图在python中使用Selenium在web上抓取登录页面后面的一些数据。通过查看源代码,页面源代码如下:Javascript Python selenium-如何在动态网站上找到登录元素;s仅通过检查元件可见,javascript,jquery,python,selenium,web-scraping,Javascript,Jquery,Python,Selenium,Web Scraping,我正试图在python中使用Selenium在web上抓取登录页面后面的一些数据。通过查看源代码,页面源代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>sometitle</title> </h
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>sometitle</title>
</head>
<body>
<div id="id1"></div>
<div id="wrapper">Loading...</div>
<div id="id2">
... some code ...
</div>
... some code ...
<script data-main="main" src="libs/requirejs.js"></script>
</body>
</html>
然后,我通过inspect elements检查了元素,并在该页面上找到了元素:
<div id="wrapper"><div id="login-base" class="base-wrapper">
<div id="header" class="clearfix">
...
</div>
<div id="content" class="content"><div class="container-shadow" id="login-container" style="background-image: url(../images/box-bg.png);">
<br>
<h1>Header</h1>
<form action="" method="post" class="form small">
<fieldset>
<div class="group-field-block">
<label class="short">Username:</label><input type="username" name="callback_0" value="" data-validator="required" required="" data-validator-event="keyup">
</div>
<div class="group-field-block">
<label class="short">Password:</label><input type="password" name="callback_1" value="" data-validator="required" required="" data-validator-event="keyup">
</div>
<div class="group-field-block float-left">
<input name="callback_2" type="submit" class="button" index="0" value="Login">
</div>
<ul class="link-box float-left"></ul>
</fieldset>
</form>
</div>
</div>
</div>
</div>
...
标题
用户名:
密码:
我的问题是-如何在页面上找到用户名/密码/提交元素,这些元素只能从inspect元素中看到,而不能从页面源中看到?做了一些研究,似乎该网站是作为动态网站建立的,它通过jquery或javascript或其他方式重定向到其他页面。我不太明白发生了什么事。真的很感谢一些帮助或一些见解 没有区别,通常您的代码是正确的,除了在执行任何“find_element”之前应该等待页面加载+确保登录表单不在iframe中您是在问如何使用Selenium来定位元素吗?或者,您如何使用web浏览器的工具定位元素?嗨@Kiril s。非常感谢您的回复!当我运行上述selenium脚本时,它会显示一条“找不到'callback_0'(用户名)”错误消息。我尝试过多次重新加载和等待,但页面源代码与原来一样。这部分正在加载。。。不会改变的。它的内部html代码应该包含一个使用我正在寻找的POST方法的表单。但是,它不在那里。只有在我检查元素时才能找到内部人员的表单…您好@Buaban非常感谢您的回复!我想我不明白为什么我所寻找的元素没有出现在网站源代码上。因为我使用的是Selenium,如果可以在Selenium代码中完成,那就太好了。如果没有,那么使用什么工具来定位要发送的元素以自动登录网站。非常感谢您的帮助!如果您想查看更新后的源代码,可以从浏览器中获取。通过名称(“body”)查找元素。获取属性(“outerHTML”)。没有区别,通常您的代码是正确的,除非您应该等待页面加载,然后再执行任何“查找元素”+确保登录表单不在iframe中。您是否在询问如何使用Selenium定位元素?或者,您如何使用web浏览器的工具定位元素?嗨@Kiril s。非常感谢您的回复!当我运行上述selenium脚本时,它会显示一条“找不到'callback_0'(用户名)”错误消息。我尝试过多次重新加载和等待,但页面源代码与原来一样。这部分正在加载。。。不会改变的。它的内部html代码应该包含一个使用我正在寻找的POST方法的表单。但是,它不在那里。只有在我检查元素时才能找到内部人员的表单…您好@Buaban非常感谢您的回复!我想我不明白为什么我所寻找的元素没有出现在网站源代码上。因为我使用的是Selenium,如果可以在Selenium代码中完成,那就太好了。如果没有,那么使用什么工具来定位要发送的元素以自动登录网站。非常感谢您的帮助!如果您想查看更新的源代码,可以从浏览器中获取。按名称(“body”)查找元素。获取属性(“outerHTML”)。
<div id="wrapper"><div id="login-base" class="base-wrapper">
<div id="header" class="clearfix">
...
</div>
<div id="content" class="content"><div class="container-shadow" id="login-container" style="background-image: url(../images/box-bg.png);">
<br>
<h1>Header</h1>
<form action="" method="post" class="form small">
<fieldset>
<div class="group-field-block">
<label class="short">Username:</label><input type="username" name="callback_0" value="" data-validator="required" required="" data-validator-event="keyup">
</div>
<div class="group-field-block">
<label class="short">Password:</label><input type="password" name="callback_1" value="" data-validator="required" required="" data-validator-event="keyup">
</div>
<div class="group-field-block float-left">
<input name="callback_2" type="submit" class="button" index="0" value="Login">
</div>
<ul class="link-box float-left"></ul>
</fieldset>
</form>
</div>
</div>
</div>
</div>