【问题标题】:selenium driver: get the tagname of a elementselenium 驱动程序:获取元素的标记名
【发布时间】:2019-10-27 15:53:02
【问题描述】:

我想用 python 获取元素 data-test-carrier-name 的名称,更具体地说,我想得到“trenitalia”的结果。

HTML 部分如下所示:

div class="_1moixrt _dtnn7w" tabindex="0"span data-test-carrier-name="trenitalia"

我尝试了如下但没有任何运气:

company = driver.find_element_by_xpath('//div[@class="_1moixrt _dtnn7w"]')
company.get_attribute("data-test-carrier-name")

【问题讨论】:

  • 欢迎堆栈溢出! .基于类名_1moixrt _dtnn7w 似乎每次加载网页时都会发生变化。还有其他方法可以到达元素吗?例如,查找人类可读的id 标签,然后从那里钻取到元素。希望这是有道理的。
  • 如果类名是动态的(意味着每次页面加载后都会改变)然后请尝试识别您的 div 的静态元素,然后使用 //div[contains(text(),'static text') ] 在获取属性之前获取元素

标签: python html selenium webdriver element


【解决方案1】:

请在开始获取其属性之前检查元素是否可见。

org = driver.find_element_by_xpath('(//div[@class="_1moixrt _dtnn7w"])[1]/span[1]')
    # Find the value of _1moixrt _dtnn7w?
    val = org.get_attribute("data-test-carrier-name")

【讨论】:

  • 在以下站点上搜索随机输入:thetrainline.com/en-us 我用 selenium 创建了一个 python 脚本来废弃输出(时间、价格等)。我无法收集的唯一表达是运营商名称..
  • 你想在这里做什么?您要访问哪个元素?
  • 我整理了数据并创建了一个数据框,因为我想对动态定价进行实证分析。现在我无法收集的最后一个表达是企业,即。属性“data-test-carrier-name”的标签。我如何为每个连接收集运营商名称(此处为“trenitalia”或“italo”等)以完成我的数据框
  • 请尝试以上解决方案
  • 我试过了,不幸的是没有成功。例如,对于出发时间,我是这样进行的。我找到元素,然后提取元素的文本:dep_times = driver.find_elements_by_xpath('// div[@class="_1rxwtew "]') dep_times_list = [x.text for x in dep_times] 对于运营商,我能够找到并定位元素,但我找不到任何方法来提取元素本身的名称。你知道如何解决我的问题吗?
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 2021-07-09
  • 2015-09-05
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 2015-09-19
  • 2018-08-15
相关资源
最近更新 更多