【问题标题】:CSS locator: unable to locate element via codeCSS 定位器:无法通过代码定位元素
【发布时间】:2023-03-14 21:30:01
【问题描述】:

这是我正在处理的链接:

https://www.formula1.com/en/results.html/2017/drivers.html

我正在尝试检索 Driver 列下的所有名称。

以下是我在代码中使用的 css 选择器

dname = name.find_element_by_css_selector('span.hide-for-mobile').text

在css选择器插件中测试代码。见截图

下面是代码:

from selenium import webdriver
import os
import csv

chromeDriver = "/home/manoj/workspace2/RedTools/test/chromedriver"
os.environ["webdriver.chrome.driver"] = chromeDriver
driver = webdriver.Chrome(chromeDriver)
driver.get("https://www.formula1.com/en/results.html/2017/drivers.html")

driverNames = driver.find_elements_by_xpath("//th[contains(.,'Driver')]")

for name in driverNames:
    dname = name.find_element_by_css_selector('span.hide-for-mobile').text
    print(dname)
    print('its done')

我此时得到的错误是:

selenium.common.exceptions.NoSuchElementException: 消息:没有这样的 元素:无法找到元素:{“方法”:“css 选择器","选择器":"span.hide-for-mobile"}

我做错了什么。在这里的帮助将不胜感激。

【问题讨论】:

    标签: python css selenium xpath web-scraping


    【解决方案1】:

    您正在尝试在driverNames 列表中搜索属于每个th子元素span 元素...但th 没有子元素

    你可能会使用

    names = [pilot.text for pilot in driver.find_elements_by_css_selector('span.hide-for-mobile')]
    

    获取姓名列表

    【讨论】:

    • 完美..非常感谢@Andersson
    【解决方案2】:
    driver.get("https://www.formula1.com/en/results.html/2017/drivers.html");
    Thread.sleep(200);
    for(int i=1;i<=driver.findElements(By.xpath("//tr/td[3]")).size();i++)
    {     System.out.println(driver.findElement(By.xpath("html/body/div[2]/main/article/div /div[2]/div[2]/div[2]/div/table/tbody/tr["+i+"]/td[3]")).getText());
    }
    

    我在java中试过这个,你可以把它转换成python你知道

    【讨论】:

      猜你喜欢
      • 2019-12-25
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      相关资源
      最近更新 更多