【问题标题】:selenium: how to find a span class within a divselenium:如何在 div 中找到 span 类
【发布时间】:2017-06-26 16:05:24
【问题描述】:

我有这样一个html页面如下:

<div id="abc" class="MyClass" data-placement-name="mysearch">
   <div class="A" title="class A">
   <div class="separator"></div>
   <span class="btn" onclick="return placementEvCall('abc', 'def', event, this);">
      ::before
   </span>
...
...

现在我想做onclickbtn 的动作。

我已经尝试driver.find_element_by_id('abc'),它按预期工作。

但我不知道如何获取和单击btn 对象,它是div 中的一个跨度类。


更新

【问题讨论】:

  • xpath - "//div[@id='abc']/span"
  • @Yves,你到底想做什么?您是否只想单击 span ?还是想通过onclick="return placementEvCall('abc', 'def', event, this);这个方法获取返回值?
  • @Tuks 我只需要点击它。
  • @Yves,好的。那么你有没有试过 Santosh kumar 在评论中写的 xpath 呢?
  • @Tuks 好吧,我试过这样:driver.find_element_by_xpath("//div[@id='abc']/span"),但我得到一个错误:Message: no such element: Unable to locate element

标签: python python-3.x selenium


【解决方案1】:

尝试使用xpath 的值//div[@id="abc"]//span[@class="btn"],如下所示:

driver.find_element_by_xpath('//div[@id="abc"]//span[@class="btn"]').click()

如果这能回答您的问题,请告诉我。

【讨论】:

  • 您的答案应该很好,但不适用于我的情况。我只是把真实情况放在我的问题中。我正在尝试获取选定的部分并执行单击操作。我试过这样:driver.find_element_by_xpath('//div[@id="taplc_masthead_search_0"]//span[@class=".ui_icon.search.cye-lm-tag"]').click()driver.find_element_by_xpath('//div[@id="taplc_masthead_search_0"]//span[@class="search"]').click()driver.find_element_by_xpath('//div[@id="taplc_masthead_search_0"]//span[@class="ui_icon search cye-lm-tag"]').click()。没有任何效果。
  • 如果可能,您可以自己尝试:https://www.tripadvisor.cn/。我正在尝试模拟点击右上角的搜索图标。
【解决方案2】:

你可以简单地使用

In [1]: from selenium import selenium

In [2]: from selenium import webdriver

In [3]: from selenium.webdriver.common.keys import Keys

In [4]: from selenium.webdriver.firefox.webdriver import FirefoxProfile

In [5]: browser = webdriver.Firefox()

In [6]: browser.get('file:///home/pooja/example_page.html')

In [7]: btn = browser.find_element_by_class_name('btn')

In [8]: btn.cl
btn.clear  btn.click  

In [8]: btn.click()

为了你的reference

【讨论】:

  • 现在出现这样的错误:Message: invalid selector: Compound class names not permitted
  • @Yves 您可以查看stackoverflow.com/questions/32043877/… 的错误消息
  • 事实上你是对的。去看看我的问题中的捕获。你会发现有三个类名。我试图find_element_by_class_name(ui_icon search cye-lm-tag),这就是我收到错误的原因。现在我只需 find_element_by_class_name(search) 就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2020-02-10
  • 2014-10-01
  • 1970-01-01
  • 2023-02-11
  • 2016-06-02
相关资源
最近更新 更多