硒和Python自动登录

问题描述 投票:-1回答:2

我试图用Selenium登录到一台打印机,并进行一些测试。我真的没有在这个过程中很多经验和发现它有点混乱。

首先,让我可以一直想我在Chrome中打开打印机的网页,并做了右键点击“查看页面源代码”的价值观 - 这竟然是没有帮助的。在这里,我只能看到一堆调用一些.js文件的脚本<script>标签。我假定这是我的问题的一个重要组成部分。

接下来,我选择右击后的“检查”选项。从这里我可以看到加载的实际HTML。我登录到网站,并记录在Chrome的过程。有了这个,我是能够识别包含用户名和密码的变量。我去了HTML的这一部分做了正确的点击复制Xpath的。然后,我尝试使用硒find_element_by_xpath但仍没有运气。我已经尝试了所有其他方法(由ID找到,并将其命名),但是它返回的元素没有发现错误。

我觉得有东西在这里根本,我不理解。有人对这个有经验么???

注:我使用Python 3.7和硒,但我不反对尝试比硒等东西,如果没有做到这一点更优雅的方式。

我的代码看起来是这样的:

编辑这里是我更新的代码 - 我可以证实这不只是一个时间/等待问题。我已经设法成功地抢得头两个外部因素,但第二个我去深入它的错误了。

def sel_test():
    chromeOptions = Options()
    chromeOptions.add_experimental_option("useAutomationExtension", False)
    browser = webdriver.Chrome(chrome_options=chromeOptions)
    url = 'http://<ip address>/'
    browser.get(url)
    try:
        element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="ccrx-root"]')))

    finally: browser.quit()

我想是埋在这个标签中的元素 - 也许这有某种关系呢?也许有关this post

<frame name="wlmframe" src="../startwlm/Start_Wlm.htm?arg11=">
python python-3.x selenium google-chrome python-requests
2个回答
0
投票

正如this post提到你只能用这被视为当前帧的工作。你需要告诉硒来切换图像,以便访问子框架。

例如:browser.switch_to.frame('wlmframe')

那么这将加载嵌套内容,以便您可以访问孩子


0
投票

你的问题是最有可能做的或者不加载页面上的元素,直到你的机器人搜索,或者弹出改变元素的XPath的后。

尝试这个:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

delay = 3 # seconds
try:
    elementUsername = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.xpath, 'element-xpath')))

    element.send_keys('your username')

except TimeoutException:
    print("Loading took too much time!")

你可以找到更多关于这个here

© www.soinside.com 2019 - 2024. All rights reserved.