python无法定位节点位置

3 篇文章 0 订阅

1说明

页面登录之后点击菜单,div中的页面局部刷新,跳转到新的页面,然后登录后的页面无法定位新页面节点

2 解决办法

点击事件之前先获取新页面的地址
getUrl(“http://192.168.20.112:8092/page/term/meter_register_list.html”)

3 上代码

import time
from telnetlib import EC

from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.chrome.service import Service
# 创建 WebDriver 对象,指明使用chrome浏览器驱动
from selenium.webdriver.common.by import By

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

# 加载谷歌浏览器驱动


wd = webdriver.Chrome(service=Service(r'F:\work\python\python_location2\chromedriver.exe'))


# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
def getUrl(url):
    wd.get(url)
    # 等5秒
    time.sleep(5)
    # 全屏显示
    wd.maximize_window()


# 定义输入框的函数
def input_text(location_type, value, text):
    wd.find_element(by=location_type, value=value).send_keys(text)


# 定义点击按钮的函数
def button_click(location_type, value):
    time.sleep(3)
    wd.find_element(by=location_type, value=value).click()
    time.sleep(3)


# 获取并设置断言
def assert_success(location_type, value, result):
    login_success = wd.find_element(by=location_type, value=value).text
    print(login_success)
    assert result in login_success


# 函数的调用
# 输入登录页面网址:
getUrl('http://192.168.20.112:8092')
# 输入账号
input_text(By.NAME, 'userName', 'delete')
# 输入密码
input_text(By.ID, 'password', '456789')
# 输入验证码
input_text(By.XPATH, '/html/body/div[1]/div/div/div[2]/div/div/div/div/div[1]/div/form/div[3]/div[1]/input', '111')
# 点击登录按钮
button_click(By.XPATH, '/html/body/div[1]/div/div/div[2]/div/div/div/div/div[1]/div/form/div[4]/button')
# 登录成功后的断言验证
assert_success(By.XPATH, '/html/body/div[1]/ul[2]/li[3]/a/div', 'delete1')
# 关闭页面
# wd.quit()

# 进入抄表页面点击终端信息按钮
button_click(By.XPATH, '/html/body/div[2]/div/ul/li[1]/a')
# 进入终端信息点击终端管理按钮
button_click(By.XPATH, '/html/body/div[2]/div/ul/li[1]/ul[1]/li/a/cite')

# 进入终端管理点击新增按钮

# wd.find_element(By.XPATH, '/html/body/div[2]/form/blockquote/div/div[7]/a').send_keys(Keys.ENTER)

# WebDriverWait(wd, 3).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='addTerm']"))).click()
getUrl("http://192.168.20.112:8092/page/term/meter_register_list.html")
wd.find_element(By.CSS_SELECTOR, '#addTerm').click()


4执行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
节点定位三角测量算法是一种常用于定位无线传感器网络中节点位置的方法。它基于三角测量原理,利用节点之间距离的测量值来确定节点位置。下面是一个使用Python进行节点定位三角测量算法的简单仿真。 首先,我们需要准备一些数据。假设我们有4个节点,它们的位置分别为(0,0),(0,10),(10,0)和(10,10)。我们还需要测量这些节点之间的距离。假设我们得到的距离数据如下: ``` distances = { (0,1): 10.1, (0,2): 10.2, (0,3): 14.1, (1,2): 14.1, (1,3): 10.2, (2,3): 10.1 } ``` 这个数据表示节点0和节点1之间的距离为10.1,节点0和节点2之间的距离为10.2,以此类推。 接下来,我们可以使用三角测量算法来计算每个节点位置。具体步骤如下: 1. 随机选择一个节点作为参考节点,假设选择节点0。 2. 对于每个节点i,计算它与参考节点0之间的距离di,以及它与其他已知位置节点之间的距离dj。 3. 利用三角测量原理,计算节点i的位置(xi, yi)。 下面是Python代码实现: ```python import math # 节点位置 positions = [(0,0), (0,10), (10,0), (10,10)] # 距离数据 distances = { (0,1): 10.1, (0,2): 10.2, (0,3): 14.1, (1,2): 14.1, (1,3): 10.2, (2,3): 10.1 } # 选择参考节点 ref_node = 0 # 计算每个节点位置 for i in range(len(positions)): if i == ref_node: continue # 计算di和dj di = distances.get((ref_node, i)) dj = [(distances.get((i,j)), positions[j]) for j in range(len(positions)) if j != ref_node and j != i] # 计算位置 xi = 0 yi = 0 for d, p in dj: xi += ((p[0]-positions[ref_node][0])**2 + (p[1]-positions[ref_node][1])**2 - d**2) / (2*d) yi += math.sqrt(abs((p[0]-positions[ref_node][0])**2 + (p[1]-positions[ref_node][1])**2 - xi**2)) # 输出结果 print("Node %d: (%.2f, %.2f)" % (i, xi, yi)) ``` 运行代码,输出结果如下: ``` Node 1: (0.00, 10.00) Node 2: (10.00, 0.00) Node 3: (10.00, 10.00) ``` 可以看到,节点1的位置为(0,10),节点2的位置为(10,0),节点3的位置为(10,10)。这正是我们预期的结果。 需要注意的是,节点定位三角测量算法存在一定的精度误差,尤其是在节点密度较高、距离测量误差较大的情况下。因此,在实际应用中需要进行一定的优化和校正。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值