Selenium-driver.find_element_by_css_选择器找不到元素(python)

2024-05-20 23:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用“find_element_by_css_selector”获取元素“Select”(a ref)时遇到问题。

我尝试了下面的方法,但都没有成功:

driver.find_element_by_css_selector("div.plan.right > a.select.").click()
driver.find_element_by_xpath("//div[@class='plan right']/div[2]/a/select").click()

有人能给我一些建议吗?谢谢!!

<div class="choose_plan">
   <h1>Sign up now for <strong>UNLIMITED</strong> access <br/>to all </h1>
   <div class="plans">
      <div class="plan left">
         <div class="head">
            <p>MONTHLY</p>
         </div>
         <div class="body">
            <p>annually</p>
         </div>
         <hr />
         <a href="/bbb?plan_id=6" class="select signup-dialog" data-planId="6" data-url="/users/new?r">SELECT</a>
      </div>
      <div class="plan right">
         <img alt="Popular-right" class="popular" src="/assetse8.png" />
         <div class="head">
            <p>14</p>
         </div>
         <div class="body">
            <p>Unlimited</p>
         </div>
         <hr />
         <a href="/account/purchase?plan_id=31" class="select signup-dialog" data-planId="31" data-url="/users/new?aaa">SELECT</a>
      </div>
   </div>
</div>

Tags: rightdivdatabydriverelementfindh1
3条回答

我知道你已经有了答案,但有一个简单的选择,也许在未来会有帮助。从您提供的HTML来看,data-planId属性对于每个A标记都是唯一的。您可以使用下面的代码来利用它。

driver.find_element_by_css_selector("a[data-planId='31']")

有关详细信息,请参阅此CSS Selector reference

我会尽量让事情简单化:

driver.find_element_by_css_selector("div.right a.select")

或:

driver.find_elements_by_link_text("SELECT")[-1]

这里我们基本上得到最后一个a元素,它有SELECT文本。

格式良好的HTML会有帮助,因为第15行(<div class="choose_plan">)似乎未关闭。下面的解决方案删除了这一行,但HTML的其余部分如图所示。你可以测试online XPath here

driver.find_element_by_xpath("//div[@class='plan right']/a").click()

产生以下结果:

Element='<a href="/account/purchase?plan_id=31" class="select signup-dialog" data-planId="31" data-url="/users/new?aaa">SELECT</a>'

相关问题 更多 >