簡體   English   中英

如何在 Python 中使用 Selenium 單擊下拉列表的 li 元素^

[英]How to click on li element of a dropdown list using Selenium in Python^

我正在嘗試在以下網站的下拉列表中 select li 元素“US”: https://proxyscrape.com/free-proxy-list

這是我有但不起作用的 python 代碼:

driver.find_element_by_xpath('/html/body/main/div/div[1]/div[3]/div/div[1]/div[2]').click()
time.sleep(4)
driver.find_element_by_css_selector("#list httpcountry countryselect [value='US']")

這是我正在使用的 HTML:

<div class="nice-select selectortypes open" tabindex="0">
  <span>
    Country: <span class="current">all</span>
  </span>
  <ul class="list httpcountry countryselect">
    <li data-value="all" class="option">all</li>
    <li data-value="US" class="option">US</li>
    <li data-value="ES" class="option">ES</li>
    <li data-value="RU" class="option">RU</li>
    <li data-value="PL" class="option">PL</li>
    <li data-value="BD" class="option">BD</li>
    <li data-value="IR" class="option">IR</li>
    <li data-value="FR" class="option">FR</li>
    <li data-value="CN" class="option">CN</li>
    <li data-value="CA" class="option">CA</li>
    <li data-value="PK" class="option">PK</li>
    <li data-value="IN" class="option">IN</li>
    <li data-value="ID" class="option">ID</li>
    <li data-value="BR" class="option">BR</li>
    <li data-value="DE" class="option">DE</li>
    <li data-value="GB" class="option">GB</li>
    <li data-value="TH" class="option">TH</li>
    <li data-value="SG" class="option">SG</li>
    <li data-value="EG" class="option">EG</li>
    <li data-value="UA" class="option">UA</li>
  </ul>
</div>

關於如何 select 這個元素的任何線索?

如果您查看 select US 選項時會發生什么,那么您可以看到,它將在此處更改請求中的參數:

從:

<a href="https://api.proxyscrape.com/v2/?request=getproxies&amp;protocol=http&amp;timeout=10000&amp;country=all&amp;ssl=all&amp;anonymity=all&amp;simplified=true" id="downloadhttp" onclick="dataLayer.push({'event': 'GAEvent', 'eventAction': 'downloadfpl', 'eventCategory': 'fpl'});" download="">Download</a>

至:

<a href="https://api.proxyscrape.com/v2/?request=getproxies&amp;protocol=http&amp;timeout=10000&amp;country=US&amp;ssl=all&amp;anonymity=all&amp;simplified=true" id="downloadhttp" onclick="dataLayer.push({'event': 'GAEvent', 'eventAction': 'downloadfpl', 'eventCategory': 'fpl'});" download="">Download</a>

因此,您實際上不想單擊 US 選項,但可能會發送帶有適當參數的請求

解決方案:

在點擊國家下拉列表之前需要等待,因為頂部橫幅出現並且 webdriver 失去焦點,下拉關閉。

這是我編寫的代碼,腳本在這兩個地方添加了兩個睡眠后通過了:

driver.get('https://proxyscrape.com/free-proxy-list')
country_list = driver.find_element_by_css_selector('.list.socks4country.countryselect').find_element_by_xpath('./..')
sleep(2)
country_list.click()
sleep(1)
country_list.find_element_by_css_selector('[data-value="US"]').click()
us = driver.find_element_by_css_selector('[class="list socks4country countryselect"] [data-value="US"]')
assert us.get_attribute('class') == 'option selected'

暫無
暫無

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

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