我正在嘗試訪問一個眾所周知的在線購物服務,對結果進行過濾和排序,但是當您第一次打開該網站時,該服務有一個提供優惠券的“彈出窗口”。我正試圖忽略這個消息。問題是彈出窗口,不是真正的彈出窗口,而是一系列在訪問主頁后不久動態創建的 div 和 img 標簽。我嘗試過按類、Xpath、CSS 搜索,但沒有成功。誰能告訴我我做錯了什么driver = webdriver.Chrome(options=opts, executable_path='chromedriver')driver.delete_all_cookies()driver.get('https://www.aliexpress.com/')timeout = 30try: WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.XPATH,'//*[@id="6216442440"]/div/div/img')))except TimeoutException: driver.quit()
1 回答

開心每一天1111
TA貢獻1836條經驗 獲得超13個贊
消除消息的元素位于 an 內,<iframe>
因此您必須:
誘導WebDriverWait等待所需的框架可用并切換到它。
誘導WebDriverWait以使所需元素可單擊。
您可以使用以下任一定位器策略:
使用
CSS_SELECTOR
:driver.get('https://www.aliexpress.com/') WebDriverWait(driver,?20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://campaign.aliexpress.com/wow/gcp/']"))) WebDriverWait(driver,?20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,?"img.rax-image[src^='https://img.alicdn.com/tfs']"))).click()
使用
XPATH
:driver.get('https://www.aliexpress.com/') WebDriverWait(driver,?20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"http://iframe[starts-with(@src,?'https://campaign.aliexpress.com/wow/gcp/')]"))) WebDriverWait(driver,?20).until(EC.element_to_be_clickable((By.XPATH,?"http://img[@class='rax-image?'?and?starts-with(@src,?'https://img.alicdn.com/tfs')]"))).click()
注意:您必須添加以下導入:
from?selenium.webdriver.support.ui?import?WebDriverWait from?selenium.webdriver.common.by?import?By from?selenium.webdriver.support?import?expected_conditions?as?EC
瀏覽器快照:
添加回答
舉報
0/150
提交
取消