javascript - 无法缩小 Python/Selenium 中的正确元素
问题描述
因此,我正在尝试制作一个网站操作脚本,以帮助在我们的托管提供商上自动创建电子邮件邮箱。
我既是 Python 新手,也是编写 Web 资源脚本的新手,所以如果有些东西看起来很奇怪或平庸,那就是为什么 :)
这是我的脚本:
import time
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
from selenium import webdriver
from selenium.webdriver.support.select import Select as driverselect
driver = webdriver.Firefox()
main_url = 'https://website.com:446'
opts = Options()
# noinspection PyDeprecation
# opts.set_headless()
#assert opts.headless # Operating in headless mode
browser = Firefox(options=opts)
browser.get(main_url)
search_form = browser.find_element_by_id('LoginName')
search_form.send_keys('username')
search_form = browser.find_element_by_id('Password')
search_form.send_keys('password')
search_form.submit()
time.sleep(5)
# provision = driverselect(driver.find_element_by_xpath("/html/body/div[2]/div[2]/nav/div/ul/li[4]"))
provision = driver.find_element_by_xpath('/html/body/div[2]/div[2]/nav/div/ul/li[4]/a/span[1]')
provision.submit()
# exchange = driver.find_element_by_name('Exchange')
# exchange.submit()
我的错误是:
回溯(最近一次通话最后):文件“/home/turd/PycharmProjects/Automate_NSGEmail/selenium_test.py”,第 23 行,in provision = driver.find_element_by_xpath('/html/body/div[2]/div[2]/导航/div/ul/li[4]/a/span 1 ')
文件“/home/turd/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 394 行,在 find_element_by_xpath 中 return self.find_element(by=By.XPATH, value=xpath ) 文件“/home/turd/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 976 行,在 find_element return self.execute(Command.FIND_ELEMENT, { File "/ home/turd/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 321 行,在执行 self.error_handler.check_response(response) 文件“/home/turd/.local /lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py",第 242 行,在 check_response 中引发 exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:/html/body/div[2]/div[2]/nav/div/ul/li[4]/a/span 1
现在我直接从该页面上的开发工具复制了 Xpath 值,以下是该网站上的代码块:
我正在尝试抓取并“单击”上图中的一个 Active Dynamic-Menu 项。我认为该菜单是 JS,但我不是 100% 肯定的。
无论如何,如果有人可以帮助我缩小范围并抓住那个爆炸的元素,我将非常感激。
解决方案
所以我自己找到了答案。我的脚本开头有一些错误的代码:
driver = webdriver.Firefox()
main_url = 'https://website.com:446'
opts = Options()
# noinspection PyDeprecation
# opts.set_headless()
#assert opts.headless # Operating in headless mode
browser = Firefox(options=opts)
browser.get(main_url)
我将此部分更改为:
driver = webdriver.Firefox()
url = 'https://website.com:446'
opts = Options()
driver.maximize_window()
driver.get(url)
我之前打开了两个 Firebox 实例,driver.* 行会尝试在未登录的 FF 实例上定位 xpath 标签。
德普。
推荐阅读
- vb.net - vb.net Outlook - 代码中没有错误但未发送邮件
- python - 我可以使用 dask 创建一个 multivariate_normal 矩阵吗?
- c++ - sqlite 在多行查询返回第一行后返回 SQLITE_DONE
- python - 总结多个类 Def 函数以获取 Django 模型中的总量
- c# - 获取有关 Func 的调用者和参数(名称和值)的信息
代表 - python - Argsort 不能与 numba 结合使用
- sql - 如何在 sql 中将两个 DATETIME 划分为 15 个 mints 插槽?
- loops - 是否可以从 Ansible 组中删除主机?
- django - 在 django 分页中缩短链接
- android - 如何有效地计算有房间的子实体?