簡體   English   中英

(初學者)如果python上的變量selenium

[英]( Beginner ) If variable selenium on python

我是編碼新手,正在嘗試通過 Selenium 學習網頁自動化。

到目前為止,我已經設法打開一個網頁,讓它點擊我想要點擊的地方並輸入我想要的任何單詞。 但是,我正在為 if 變量而苦苦掙扎。

基本上我想告訴 Selenium 單擊我通過 xpath 找到的按鈕。反過來,這個按鈕應該在屏幕上顯示一個新元素,我也可以通過 xpath 找到它。但是,有時當我單擊這個按鈕時,新元素不會展示。 那么如何告訴Selenium,如果元素不顯示,它應該刷新頁面並點擊直到顯示新元素,然后才能點擊新元素?

代碼:

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.keys import Keys

from selenium.common.exceptions import NoSuchElementException


driver = webdriver.Firefox()

url = "https://www.compumsa.eu/item/GV-R55XTOC-4GD-Gigabyte-Radeon-RX-5500-XT-4GB-OC-PCIE-9320"

driver.get(url)

driver.maximize_window()

click = driver.find_element_by_xpath('//*[@id="ContentPlaceHolderMain_LBAddItem"]')

click.click()

itempanier = driver.find_element_by_xpath('//*[@id="SpanCaddy"]')


if (itempanier.is_displayed()
  1. 使用顯式等待。
  2. 使用 while 無限循環,並在內部使用try - except find_elements ,基本上find_elements將在Selenium-Python中返回一個列表並檢查它的大小,如果>0元素將可見,如果不可見,go 否則阻止並重新加載頁面,這將重復直到它從 while 循環中中斷。

僅在兩個條件下中斷:

  1. 如果滿足 if 塊條件或某些原因代碼已進入 except 塊。

代碼:

driver = webdriver.Chrome(driver_path)
driver.maximize_window()
driver.implicitly_wait(30)
wait = WebDriverWait(driver, 30)
driver.get("https://www.compumsa.eu/item/GV-R55XTOC-4GD-Gigabyte-Radeon-RX-5500-XT-4GB-OC-PCIE-9320")
click = wait.until(EC.element_to_be_clickable((By.ID, "ContentPlaceHolderMain_LBAddItem")))
click.click()

while True:
    try:
        itempanier = driver.find_elements_by_xpath('//*[@id="SpanCaddy"]')
        if len(itempanier) > 0:
            print('Meaning SpanCaddy web element is visible')
            # do some stuff like clicking on it and then break from the loop. 
            #break
        else:
            print('Meaning SpanCaddy web element is not visible')
            # do some other stuff like reload
            driver.refresh()
    except:
        print('Something went wrong')
        pass
        break

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM