当前位置: 首页 > 知识库问答 >
问题:

无法缩小Python/Selenium中的正确元素

穆远
2023-03-14

因此,我正在尝试制作一个网站操作脚本,以帮助我们的托管提供商自动创建电子邮件邮箱。

我既是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()

我的错误是:

回溯(最近一次调用最后):文件“/首页/图德/皮查姆项目/Automate_NSGEmail/selenium_test.py”,第 23 行,在规定中 = driver.find_element_by_xpath('/html/正文/div[2]/div[2]/导航/分区/ul/li[4]/a/span1')

文件“/home/turd/.local/lib/python3.8/site packages/selenium/webdriver/remote/webdrivers.py”,第394行,在find_element_by_xpath返回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/webdrivers.py“第321行中,在executeself.error_handler.check_response(response)文件“/home/turd/.local/lib/python4.8/site packagess/seleniumi/webdrivers/remoter/errorhandler.py”第242行中,check_ resselenium.common.exceptions。NoTouchElementException:消息:无法定位元素:/html/body/div[2]/div[2]/nav/div/ul/li[4]/a/span1

现在,我直接从该页面上的开发工具中复制了Xpath值,下面是该站点中的代码块:

我试图抓住并点击上面图片中的一个活动动态菜单项。我认为菜单是JS的,但我不是100%肯定。

无论如何,如果有人能帮我缩小范围,抓住那个该死的元素,我会非常感激。

共有1个答案

步德宇
2023-03-14

所以我自己发现了答案...我在脚本的开头有一些错误的代码:

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 实例,驱动程序.* 行将尝试在未登录的 FF 实例上找到 xpath 标记。

德普。

 类似资料:
  • 我的AUT有不同的选项卡来测试和验证不同的WebElements,这些选项卡上有几乎相同的属性。我需要验证一个下拉搜索框,并验证下拉列表中的选项。我的脚本找不到这个下拉搜索框,而xpath在firebug中工作得非常好,可以识别搜索框。 显示的错误为: 请告诉我什么可能是错误的,以及为什么Selenium不能使用xpath定位元素,而它在xpath中运行良好。另外,如果我的xpath不正确,请告诉

  • 问题内容: 我是一个selenium菜鸟,一直在努力用python完成事情。我试图从此页面迭代所有用户评论(“ partial_entry”类)https://www.tripadvisor.com/Airline_Review-d8729164-Reviews- Cheap-Flights-or560-TAP- Portugal#REVIEWS 即使Im每次都在for循环中选择一个不同的元素,但

  • 问题内容: 我正在尝试搜寻房地产网站上的商品。它有一个aspx表单,必须在提交之前填写。 http://www.cbre.us/PropertyListings/Pages/Properties-for- Sale.aspx 我只关心俄勒冈州的多户家庭财产。所以这是我的第一次尝试: 当我运行此脚本时,出现错误“找不到元素“ ForSalePropertyType”。在这里我在做什么错? 问题答案:

  • 问题内容: 我一直在尝试填充输入: 为此,我必须找到此元素。 我尝试以下事情: (萤火虫的路径) 甚至要等100秒 我总是得到: selenium.common.exceptions.NoSuchElementException:消息:’无法找到元素:(…) 你知道我在做什么错吗? 问题答案: 问题是您的标签位于内,您需要先切换到它:

  • 问题内容: WebDriver 的等效功能是什么? 要么 我已经尝试了这两种方法,并且它们都起作用,但是哪一个将始终对所有元素起作用? 对于任何元素(例如按钮,链接等),哪种方法是正确的?这对我很重要,因为该功能将在不同的UI上使用。 问题答案: 以下代码- 尝试查找输入标签框以输入一些信息,而 更适用,因为它适用于图像元素,链接元素,下拉框等。 因此,使用 moveToElement() 方法将