我想从页面 url = ' https://ru.aliexpress.com/store/product/Gillette-Fusion-blade-4-pc/2671035_1000003578539.html?spm=2114.12010612.0.0.xL0ySy '获得反馈
我等到页面加载。我可以使用 Google Chrome 检查器找到元素。但是硒找不到元素。而且我在源页面也找不到元素。
如何使用 selenium 或其他工具获得反馈?
这是我的代码:
from selenium import webdriver
import time
import csv
import requests
url = 'https://ru.aliexpress.com/store/product/Gillette-Fusion-blade-4-pc/2671035_1000003578539.html?spm=2114.12010612.0.0.xL0ySy'
driver = webdriver.Chrome()
driver.get(url)
try:
close_popup = driver.find_element_by_class_name('close-layer')
close_popup.click()
except:
print("no alert")
tab_feedback = driver.find_element_by_xpath('//*[@id="j-product-tabbed-pane"]/ul/li[2]')
tab_feedback.click()
time.sleep(8)
try:
text_feedback = driver.find_element_by_xpath('//*[@id="transction-feedback"]/div[4]/div[1]/div[2]/div[3]/dl')
print(text_feedback.text)
except:
print("cant find by xpath")
try:
text_feedback = driver.find_element_by_class_name('buyer-feedback')
print(text_feedback.text)
except:
print("cant find by class_name")
try:
text_feedback = driver.find_element_by_css_selector('div.f-content.dl.dt.span')
print(text_feedback.text)
except:
print("cant find by css_selector")
它返回:
cant find by xpath
cant find by class_name
cant find by css_selector
您可以尝试添加ExcplicitWait
如下以等待所需元素的存在:
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
text_feedback = wait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "buyer-feedback"))).text
另请注意,元素位于 内iframe
,因此您应该在处理嵌入元素之前先切换到它:
driver.switch_to.frame(driver.find_element_by_xpath('//iframe[starts-with(@src, "//feedback.aliexpress.com/display/productEvaluation.htm")]'))
从 切换回来iframe
:
driver.switch_to.default_content()
至于你的选择器:
XPath
像这样的表达式//*[@id="transction-feedback"]/div[4]/div[1]/div[2]/div[3]/dl
,而是使用更冗长的相对XPath
, like//dl[@class="buyer-feedback"]
来代替CSS
选择器div.f-content.dl.dt.span
应该匹配 element <div class="f-content dl dt span">
。请注意,您应该使用空格来指向后代元素 ( div dt
) 和">"
指向直接子元素( div>dl
)。您的CSS
选择器可能看起来像div.f-content>dl>dt>span
或div.f-content dt>span
...本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句