簡體   English   中英

Python Selenium通過data-filter-tag值單擊輸入標簽

[英]Python Selenium click on input tag by data-filter-tag value

我試圖讓硒單擊輸入復選框,但面臨不同的錯誤。
這些復選框之間的唯一區別是data-filter-tag值,所以我嘗試了這一點。

driver.find_element_by_css_selector("input[data-filter-tag='am']").click()

錯誤

ElementNotVisibleException: Message: element not interactable

網頁已加載100%

HTML代碼:

                            <ul>

                            <li class="filter-checkbox active-filter">
                                <div class="custom-checkbox" style="background-position: 0px center;"><input name="ctl00$ctl00$MainContentPlaceHolder$BaseContentPlaceHolder$pmainedge2edge4_0$ctl00$ctl14$rpFilters$ctl01$ctl00" type="checkbox" class="dealer-locator-filter" data-filter-tag="c"></div>
                                <span data-toggle="popover" data-placement="top" data-trigger="hover" data-content="" data-original-title="" title="">


<i class="c-icon hq-icon hq-icon-crown-dealer hq-icon-small " title=""></i>Crown dealers
                                </span>
                            </li>

                            <li class="filter-checkbox active-filter">
                                <div class="custom-checkbox" style="background-position: 0px center;"><input name="ctl00$ctl00$MainContentPlaceHolder$BaseContentPlaceHolder$pmainedge2edge4_0$ctl00$ctl14$rpFilters$ctl02$ctl00" type="checkbox" class="dealer-locator-filter" data-filter-tag="r"></div>
                                <span data-toggle="popover" data-placement="top" data-trigger="hover" data-content="" data-original-title="" title="">


<i class="c-icon hq-icon hq-icon-reseller hq-icon-small " title=""></i>Authorized dealers
                                </span>
                            </li>

                            <li class="filter-checkbox active-filter">
                                <div class="custom-checkbox" style="background-position: 0px center;"><input name="ctl00$ctl00$MainContentPlaceHolder$BaseContentPlaceHolder$pmainedge2edge4_0$ctl00$ctl14$rpFilters$ctl03$ctl00" type="checkbox" class="dealer-locator-filter" data-filter-tag="cs"></div>
                                <span data-toggle="popover" data-placement="top" data-trigger="hover" data-content="" data-original-title="" title="">


<i class="c-icon hq-icon hq-icon-servicing-workshop hq-icon-small " title=""></i>Has service
                                </span>
                            </li>

                            <li class="filter-checkbox active-filter">
                                <div class="custom-checkbox" style="background-position: 0px center;"><input name="ctl00$ctl00$MainContentPlaceHolder$BaseContentPlaceHolder$pmainedge2edge4_0$ctl00$ctl14$rpFilters$ctl04$ctl00" type="checkbox" class="dealer-locator-filter" data-filter-tag="am"></div>
                                <span data-toggle="popover" data-placement="top" data-trigger="hover" data-content="" data-original-title="" title="">


<i class="c-icon hq-icon hq-icon-category-robotic-lawn-mowers hq-icon-small " title=""></i>Automower® dealers
                                </span>
                            </li>

                            </ul>

                </div>

網站: 鏈接

完整的代碼:

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome('./chromedriver/chromedriver')
### website url
driver.get('https://www.husqvarna.com/us/')
sleep(6)
driver.find_element_by_css_selector("input[data-filter-tag='am']").click()

如果使用此相當討厭的CSS選擇器選擇復選框的周圍div,則至少可以無例外地單擊復選框。

checkbox = driver.find_element_by_css_selector("#MainContentPlaceHolder_BaseContentPlaceHolder_pmainedge2edge4_0_ctl00_ctl14_dealerFilters > section:nth-child(1) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(1) > li:nth-child(4) > div:nth-child(1)")
checkbox.click()

有很多JavaScript干擾了webdriver自動化。 我還沒有找到更好的解決方案,但是至少您知道有一種方法可以與該復選框進行交互。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM