bet*_*tty 5 python selenium-webdriver
我在使用“find_element_by_css_selector”来获取元素“Select”(a href)时遇到问题。
我尝试了以下方法,但都不起作用:
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()
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我一些建议吗?谢谢!!
<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>
Run Code Online (Sandbox Code Playgroud)
我知道您已经有了答案,但有一个简单的替代方案可能在未来有所帮助。从您提供的 HTML 来看data-planId,每个A标签的属性似乎都是唯一的。您可以使用下面的代码来利用它。
driver.find_element_by_css_selector("a[data-planId='31']")
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅此CSS 选择器参考。
拥有格式良好的 HTML 将会有所帮助,因为第 15 行 ( <div class="choose_plan">) 似乎未结束。下面的解决方案是删除此行后完成的,但 HTML 的其余部分如图所示。您可以在此处测试在线 XPath。
driver.find_element_by_xpath("//div[@class='plan right']/a").click()
Run Code Online (Sandbox Code Playgroud)
产生以下结果:
Element='<a href="/account/purchase?plan_id=31" class="select signup-dialog" data-planId="31" data-url="/users/new?aaa">SELECT</a>'
Run Code Online (Sandbox Code Playgroud)