回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>是否可以通过selenium通过<code>onclick</code>元素的部分值单击元素?</p>
<p>一个页面上有多个输入项,我只需要选择一个具有特定字符串的项。</p>
<p>例如:</p>
<pre><code><input name="booksubmit" type="button" class="searchAvailBtnSelect" value="Select" onclick="setTimeout('disableSelect()',1);bookNowSubmit('0165','1BD','000000452014022703S000016500010708F ','101400','156000','3','02/27/2014','false','false','false','false','true','false','false','EXPRESS','63','1 Bedroom Deluxe','false','AC')">
<input name="booksubmit" type="button" class="searchAvailBtnSelect" value="Select" onclick="setTimeout('disableSelect()',1);bookNowSubmit('0165','2BD','000000452014022703S000016500010708F ','101400','156000','3','02/27/2014','false','false','false','false','true','false','false','EXPRESS','63','2 Bedroom Deluxe','false','AC')">
<input name="booksubmit" type="button" class="searchAvailBtnSelect" value="Select" onclick="setTimeout('disableSelect()',1);bookNowSubmit('0165','1BD','000000452014022703S000016500010708F ','101400','156000','3','02/27/2014','false','false','false','false','true','false','false','EXPRESS','63','1 Bedroom Presidential','false','AC')">
</code></pre>
<p>如果你注意到最后,有一个“1卧室豪华”,“2卧室豪华”,和“1卧室总统”。因为它是一个输入项,所以没有任何文本可供我筛选,但我只需要选择一个特定的项,例如2卧室豪华型。</p>
<p>我能做点什么吗</p>
<pre><code>buttons = driver.find_elements_by_name('booksubmit')
for button in buttons:
if button ........
</code></pre>
<p>有什么事吗?我目前正在使用beautifulsoup4来解析页面上的html并检索与该项相关联的文本,所以我根本不知道这是否可以合并。从视觉上看,页面是一个HTML表,格式如下:</p>
<pre><code>+--------------------------------------------------------------------+
| 1 Bedroom Deluxe | $25 | [button i don't care about] |
|------------------------+---------+---------------------------------|
| 2 Bedroom Deluxe | $50 | [button i'm trying to click] |
|------------------------+---------+---------------------------------|
| 1 Bedroom Presidential | $50 | [button i don't care about] |
+--------------------------------------------------------------------+
</code></pre>
<p>编辑:</p>
<p>我想发布这个太早了。紧接着,一位同事过来建议用Xpath查找元素:</p>
<pre><code>driver.find_element_by_xpath('//input[contains(@onclick,"1 Bedroom Deluxe")]')
</code></pre>