gpt4 book ai didi

javascript - Python. Selenium 。找不到现有元素。如何切换框架

转载 作者:行者123 更新时间:2023-11-30 15:25:16 27 4
gpt4 key购买 nike

我希望得到页面的反馈网址 = ' https://ru.aliexpress.com/store/product/Gillette-Fusion-blade-4-pc/2671035_1000003578539.html?spm=2114.12010612.0.0.xL0ySy '

我等到页面加载完毕。我可以使用 Google Chrome 检查器找到元素。但是 Selenium 找不到元素。而且我在源页面也找不到元素。

如何使用 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 , 比如 //dl[@class="buyer-feedback"]相反
  • CSS选择器 div.f-content.dl.dt.span应匹配元素 <div class="f-content dl dt span"> .请注意,您应该使用空格指向后代元素 ( div dt ) 和 ">"指向直接 child (div>dl)。你的CSS选择器可能看起来像 div.f-content>dl>dt>spandiv.f-content dt>span ...

关于javascript - Python. Selenium 。找不到现有元素。如何切换框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com