从“onclick"部分值中查找并单击一个项目 [英] Find and click an item from 'onclick' partial value

查看:18
本文介绍了从“onclick"部分值中查找并单击一个项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以通过 onclick 元素的部分值通过 selenium 单击元素?

Is it possible to click an element through selenium by a partial value of an onclick element?

一个页面有多个输入项,我只需要选择一个带有特定字符串的输入项即可.

There are multiple input items on a page, and I only need to select one with a specific string.

例如:

<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')">

如果你注意到最后,有一卧室豪华房"、两卧室豪华房"和一卧室总统房".由于它是一个输入项目,因此没有任何我可以过滤的文本,但我只需要选择一个特定项目,例如 2 Bedroom Deluxe.

If you notice towards the end, there is a "1 Bedroom Deluxe", "2 Bedroom Deluxe", and "1 Bedroom Presidential". Since it is an input item, there isn't any text that I would be able to filter by, but I need to only select a specific item, such as the 2 Bedroom Deluxe.

有什么我可以做的吗:

buttons = driver.find_elements_by_name('booksubmit')
for button in buttons:
    if button ........

是什么?我目前正在使用 beautifulsoup4 来解析页面上的 html 并检索与该项目关联的文本,所以我不知道是否可以合并.从视觉上看,该页面是一个 HTML 表格,格式为:

something or another? I'm currently using beautifulsoup4 to also parse the html on the page and retrieve text that is associated with the item, so i don't know if that could be incorporated at all. Visually, the page is an HTML table that is in the format of:

+--------------------------------------------------------------------+
|    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]   |
+--------------------------------------------------------------------+

我猜这个帖子发布得太早了.紧接着,一位同事提出并建议通过 Xpath 查找元素:

I guess posted this too soon. Right after, a coworked came up and suggested finding the element by Xpath with:

driver.find_element_by_xpath('//input[contains(@onclick,"1 Bedroom Deluxe")]')

推荐答案

XPath 或 CssSelector 都可以.不需要任何循环,但需要简单的定位器.

Either XPath or CssSelector would do. No need to have any looping, but straightforward locators.

driver.find_element_by_xpath(".//input[contains(@onclick, '1 Bedroom Deluxe')]")

driver.find_element_by_css_selector("input[onclick*='1 Bedroom Deluxe']")

这篇关于从“onclick"部分值中查找并单击一个项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆