from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
import time
def runScript():
browser = webdriver.Chrome(ChromeDriverManager().install())
playButton = '//*[@id="game-details-play-button-container"]/button'
browser.get("https://www.facebook.com")
browser.find_element_by_xpath('//*[@id="right-navigation-header"]/div[2]/ul/li[2]/a').click()
browser.find_element_by_xpath('//*[@id="login-username"]').send_keys("123")
browser.find_element_by_xpath('//*[@id="login-password"]').send_keys("abc")
browser.find_element_by_xpath('//*[@id="login-button"]').click()
while True:
if browser.find_element_by_class_name("btn-full-width btn-common-play-game-lg btn-primary-md btn-min-width"):
browser.find_element_by_xpath(playButton).click()
break
else:
return False
time.sleep(4)
如何使我的 while 回圈陳述句在陳述句中回圈,直到我的 if 陳述句變為真?順便說一句,我正在使用 Selenium。
uj5u.com熱心網友回復:
這里有幾個問題:
- 而不是
find_element_by_class_name你可以使用find_elements_by_class_name. 不同之處在于:如果沒有找到這樣的元素find_element將拋出例外,而find_elements將回傳一個Web 元素串列。如果匹配,元素退出,它將是非空串列,而非空串列被 Python 解釋為 BooleanTrue。否則,如果沒有找到元素,它將回傳解釋為 Boolean 的空串列False。 - 由于您通過幾個類名定位該元素,因此您應該使用 XPath 或 CSS 選擇器,而不是
by_class_name - 而不是
find_element_by_css_selector你應該使用現代風格的find_element(By.CSS_SELECTOR, "value")
With all these 和正確的縮進你的代碼可以是這樣的:
while True:
if browser.find_elements(By.CSS_SELECTOR,".btn-full-width.btn-common-play-game-lg.btn-primary-md.btn-min-width"):
browser.find_element(By.XPATH,playButton).click()
break
else:
time.sleep(0.5)
您將需要此匯入:
from selenium.webdriver.common.by import By
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/449338.html
