猿问

重复硒命令行

美好的一天,我是编码新手,并且创建了一个可以登录指定网页的网络自动化脚本。登录后,我需要使用每秒显示/弹出数字的跨度中的值。假设第一个数字是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 脚本中的语句?


摇曳的蔷薇
浏览 100回答 1
1回答

慕尼黑5688855

有几件事:WebDriverWait(driver,  1).until(EC.visibility_of_element_located((By.ID, 'spot')不等待 1 秒...它实际上最多等待1 秒以使元素变得可见。它每 250 毫秒轮询一次 DOM 中的元素,直到元素变得可见或超时。我认为您遇到的问题是,在第二次调用时,弹出窗口当前已打开,因此它满足等待条件,因此再次打印相同的数字。第二个问题是您需要等待第一个弹出窗口消失,然后等待第二个弹出窗口出现。一种方法是等待第一个弹出窗口变得陈旧。陈旧元素是指不再附加到 DOM 的元素(它不再存在)。第一个弹出窗口将出现,然后当它消失时,它将变得陈旧或与 DOM 分离。为了等待一个元素变得过时,您必须获取对该元素的引用(将其存储在变量中),然后用于WebDriverWait等待它变得过时。上代码...# store the WebDriverWait instance in a variable for reusewait = WebDriverWait(driver, 3)# wait for the first popup to appearpopup = wait.until(EC.visibility_of_element_located((By.ID, 'spot')))# print the textprint(popup.text)# wait for the first popup to disappearwait.until(EC.staleness_of(popup))# wait for the second popup to appearpopup = wait.until(EC.visibility_of_element_located((By.ID, 'spot')))# print the textprint(popup.text)# wait for the second popup to disappearwait.until(EC.staleness_of(popup))... and so on正如您所看到的,每个弹出窗口的代码都是相同的,因此如果您愿意,可以循环。
随时随地看视频慕课网APP

相关分类

Python
我要回答