這是我的代碼:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import random
import time
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome()
driver.get("https://www.ti.com/store/ti/en/p/product/?p=CD4040BE&keyMatch=CD4040BE")
time.sleep(1)
accept_and_proceed = driver.find_element_by_xpath('//*[@id="consent_prompt_submit"]')
accept_and_proceed.click()
region = Select(driver.find_element_by_xpath('//*[@id="llc-cartpage-ship-to-country"]'))
region.select_by_visible_text('Italy')
continue1 = driver.find_element_by_xpath('//*[@id="llc-cartpage-ship-to-continue"]')
continue1.click()
網站上有“庫存”一詞。如何檢測頁面上是否存在“庫存”一詞?如果它存在,則列印 x,如果它不重繪 頁面,直到它將
uj5u.com熱心網友回復:
要驗證頁面上是否存在Inventory一詞,您可以使用一個try-except{}塊來誘導WebDriverWait for thevisibility_of_element_located ()并且您可以使用以下Locator Strategies:
代碼塊:
driver.get("https://www.ti.com/store/ti/en/p/product/?p=CD4040BE&keyMatch=CD4040BE")
Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='llc-cartpage-ship-to-country']")))).select_by_visible_text('Italy')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='llc-cartpage-ship-to-continue']"))).click()
while True:
try:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class, 'u-tablet-up-only')]//span[@class='product-note product-availability' and contains(., 'Inventory')]")))
print("x")
break
except TimeoutException:
driver.refresh()
continue
driver.quit()
控制臺輸出:
x
注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
uj5u.com熱心網友回復:
試試這個:
if(driver.getPageSource().contains("Inventory"))
{
}
else
{
driver = webdriver.Chrome()
driver.get(response.url)
time.sleep(3)
driver.refresh()
}
uj5u.com熱心網友回復:
使用SeleniumBase,您可以使用self.assert_text(test)或self.assert_text(text, selector)方法來斷言頁面上的文本(如果提供了第二個可選的選擇器引數,則可以使用元素中的文本)。您還可以使用回傳 True 或 False的方法:self.is_text_visible(text)和self.is_text_visible(text, selector)。
from seleniumbase import BaseCase
class DemoSiteTests(BaseCase):
def test_demo_site(self):
self.open("https://seleniumbase.io/demo_page")
self.assert_text("Demo Page")
self.assert_text("Demo Page", "h1")
這是使用這些的更長示例:https : //github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/397006.html
標籤:Python 硒 硒网络驱动程序 网络驱动程序等待 尝试除外
上一篇:如何使用Selenium獲取頁面上第一個新聞的標題資訊
下一篇:我想廢棄一個網站并在selenium中獲取所有帶有標題的鏈接,但是一旦我從主頁導航并回傳,我就會遇到陳舊的元素問題
