CSS 定位器:无法通过代码定位元素
Posted
技术标签:
【中文标题】CSS 定位器:无法通过代码定位元素【英文标题】:CSS locator: unable to locate element via code 【发布时间】:2017-09-17 02:17:18 【问题描述】:这是我正在处理的链接:
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"
我做错了什么。在这里的帮助将不胜感激。
【问题讨论】:
【参考方案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你知道
【讨论】:
以上是关于CSS 定位器:无法通过代码定位元素的主要内容,如果未能解决你的问题,请参考以下文章