Python.Selenium。找不到现有元素。如何切换帧

维克多·德明

我想从页面 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>spandiv.f-content dt>span...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

单击框的帧切换(Python Selenium)

如何在 Python 中使用 selenium 库在帧之间切换?

Selenium Python:切换窗口并查找元素

Python Selenium find_element_by_xpath在页面中找不到现有元素

Python / Selenium-如何切换Java树菜单?

如何在 python/selenium 中切换 iframe 工作?

Selenium python 我如何执行点击切换按钮

如何使用Python在iframe中切换Selenium焦点

如何使用Selenium和Python在iframe之间切换?

找不到元素-Selenium -Python

使用Python / Selenium切换iframe

Python Selenium 找不到元素或单击元素

Python Selenium 获取元素找不到元素

Python的Selenium模块和selenium-webdriver节点包实现帧切换的方式不同吗?

Python-如何在Tkinter窗口中切换帧

用于在python,硒中切换帧的函数

找不到任何元素 Selenium Python

Python Selenium Ubuntu:WebDriverWait 找不到元素

Python Selenium Webscraping返回找不到元素

Python Selenium 找不到元素标题(xpath)

Python selenium 即使等待也找不到元素

Python selenium 在模态中找不到元素

我找不到这个元素,python selenium

如何使用Python RegEx切换字符串中的两个元素?

有没有一种方法可以在python列表中切换元素?

在Python中切换?

Selenium Python-如果找不到元素,请关闭所有内容并重新启动

Selenium Webdriver-python,找不到动态元素,尝试了所有可能的方法

如何在 Selenium python 中找到页面的特定元素,因为我找不到它们