为了账号安全,请及时绑定邮箱和手机立即绑定

重复硒命令行

重复硒命令行

摇曳的蔷薇 2023-08-03 16:43:20
美好的一天,我是编码新手,并且创建了一个可以登录指定网页的网络自动化脚本。登录后,我需要使用每秒显示/弹出数字的跨度中的值。假设第一个数字是8.2165,后面的数字是8.2984。我使用下面的行来打印数字a = print(driver.find_element_by_id('spot').text)。如何打印第二个数字(8.2984),因为如果我输入b = print(WebDriverWait(driver,  1).until(EC.visibility_of_element_located((By.ID, 'spot'))).text)等待一秒钟来打印第二个数字,它仍然返回相同的数字8.2165。语句:: a = print('第一个数字') b = print('第二个数字')如果 a= 300.0 且 b=6985 print('true')Question:: 如何循环遍历 Selenium Python 脚本中的语句?
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

有几件事:

  1. WebDriverWait(driver,  1).until(EC.visibility_of_element_located((By.ID, 'spot')不等待 1 秒...它实际上最多等待1 秒以使元素变得可见。它每 250 毫秒轮询一次 DOM 中的元素,直到元素变得可见或超时。我认为您遇到的问题是,在第二次调用时,弹出窗口当前已打开,因此它满足等待条件,因此再次打印相同的数字。

  2. 第二个问题是您需要等待第一个弹出窗口消失,然后等待第二个弹出窗口出现。一种方法是等待第一个弹出窗口变得陈旧。陈旧元素是指不再附加到 DOM 的元素(它不再存在)。第一个弹出窗口将出现,然后当它消失时,它将变得陈旧或与 DOM 分离。为了等待一个元素变得过时,您必须获取对该元素的引用(将其存储在变量中),然后用于WebDriverWait等待它变得过时。

上代码...

# store the WebDriverWait instance in a variable for reuse

wait = WebDriverWait(driver, 3)


# wait for the first popup to appear

popup = wait.until(EC.visibility_of_element_located((By.ID, 'spot')))

# print the text

print(popup.text)

# wait for the first popup to disappear

wait.until(EC.staleness_of(popup))


# wait for the second popup to appear

popup = wait.until(EC.visibility_of_element_located((By.ID, 'spot')))

# print the text

print(popup.text)

# wait for the second popup to disappear

wait.until(EC.staleness_of(popup))


... and so on

正如您所看到的,每个弹出窗口的代码都是相同的,因此如果您愿意,可以循环。


查看完整回答
反对 回复 2023-08-03
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信