亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

重復硒命令行

重復硒命令行

搖曳的薔薇 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 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號