Selenium Python. 点击单选按钮没有任何影响

0 投票
1 回答
1850 浏览
提问于 2025-04-18 04:53

首先抱歉我的英语不好。

我有一个页面上有单选按钮。这里是我想要点击的按钮的HTML代码。

<label class="radio-button__radio radio-button__radio_side_right radio-button__radio_next-for-pressed_yes" for="uniq13988671">
    <input id="uniq13988671" class="radio-button__control" type="radio" value="1000">
    <span class="radio-button__text">все</span>
</label>

这是我用Selenium写的Python脚本:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains as ac

driver = webdriver.Firefox()
driver.get("url_with_elements")
driver.implicitly_wait(20)

my_button = driver.find_element_by_css_selector("input[value='1000']")
ac(driver).move_to_element(my_button).perform()
my_button.click()

这个按钮应该能重新加载页面,加载所有元素(至少有1000个),但是它没有工作。没有任何错误,而且元素在使用方法.get_attribute('id')时能正常响应。

>>> my_button.get_attribute('id')
u'uniq13988671'

这里是包含单选按钮的行的完整HTML代码:

<td class="b-layout-table__cell">
    <div class="b-banners-per-page i-bem b-banners-per-page_js_inited" onclick="return {"b-banners-per-page":{"urlObject":{"hash":"","query":{"cmd":"setPageSize","subcmd":"showCamp","cid":"8868621","ulogin":"*mylogin*"},"file":"main.NWluTm99mAw1N.pl","directory":"/registered/","path":"/registered/main.NWluTm99mAw1N.pl","relative":"/registered/main.NWluTm99mAw1N.pl","port":"","host":"direct.yandex.ru","password":"","user":"","userInfo":"","authority":"direct.yandex.ru","protocol":"https","source":"https://direct.yandex.ru/registered/main.NWluTm99mAw1N.pl"},"optimalBannersOnPage":20}}">
        <span class="b-banners-per-page__title">Объявлений на странице: </span>
        <div class="b-banners-per-page__buttons">
            <span class="radio-button radio-button_size_s radio-button_theme_normal i-bem radio-button_js_inited" onclick="return {"radio-button":{}}">
                <label class="radio-button__radio radio-button__radio_side_left" for="uniq13988675">
                <label class="radio-button__radio radio-button__radio_checked_yes radio-button__radio_pressed_yes" for="uniq13988674">
                <label class="radio-button__radio radio-button__radio_next-for-pressed_yes" for="uniq13988673">
                <label class="radio-button__radio" for="uniq13988672">
                <label class="radio-button__radio radio-button__radio_side_right" for="uniq13988671">
                    <input id="uniq13988671" class="radio-button__control" type="radio" value="1000">
                    <span class="radio-button__text">все</span>
                </label>
            </span>
        </div>
    </div>
</td>

这是它“逐步”显示的样子,附上图片链接:https://i.stack.imgur.com/QB5Gi.png

我查看了其他问题,但没有帮助。感谢任何帮助。

补充: 如果我使用Firefox的Selenium IDE插件,这个按钮可以正常点击。

如果需要更多信息,请随时问我。

1 个回答

2

我用这样的方式解决了我的问题:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains as ac

driver = webdriver.Firefox()
driver.get("url_with_elements")
driver.implicitly_wait(20)

# my_button = driver.find_element_by_css_selector("input[value='1000']")
button_parent = driver.find_element_by_xpath("//td[2]/div/div/span/label[5]")
ac(driver).move_to_element(button_parent).perform()
button_parent.click()
ac(driver).send_keys(Keys.SPACE).perform()

撰写回答