<bc-dropdown class="hydrated" options="Week 1,Week 2,Week 3,Week 4,Week 5,Week 6,Week 7,Week 8,Week 9,Week 10,Week 11,Week 12,Week 13,Week 14,Week 15,Bowls" selected="Week 1" uid="fd5704d7-8531-483b-9f92-96340b80da78">
<!--r.4-->
<div class="bc-dropdown bc-wc-select-container bc-week-dropdown-width d-flex justify-content-end">
<div class="position-relative w-100">
<div class="bg-white h-100 sport-dropdown w-100">
<div class="align-items-center d-flex h-100 justify-content-between my-auto">
<p>
<strong class="category font-sf-ui-display-medium my-auto pl-3">
Week 2</strong>
</p>
<span class="pr-3">
<i class="fa-angle-down fas"></i>
</span>
</div>
</div>
<div class="bc-week-dropdown-width dropdown-menu overflow-auto">
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 1">
<strong class="category-text">
Week 1</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 2">
<strong class="dropdown-item-selected">
Week 2</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 3">
<strong class="category-text">
Week 3</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 4">
<strong class="category-text">
Week 4</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 5">
<strong class="category-text">
Week 5</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 6">
<strong class="category-text">
Week 6</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 7">
<strong class="category-text">
Week 7</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 8">
<strong class="category-text">
Week 8</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 9">
<strong class="category-text">
Week 9</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 10">
<strong class="category-text">
Week 10</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 11">
<strong class="category-text">
Week 11</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 12">
<strong class="category-text">
Week 12</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 13">
<strong class="category-text">
Week 13</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 14">
<strong class="category-text">
Week 14</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Week 15">
<strong class="category-text">
Week 15</strong>
</div>
<div class="category cursor-pointer dropdown-item font-sf-ui-display-medium" data-value="Bowls">
<strong class="category-text">
Bowls</strong>
</div>
</div>
</div>
</div>
</bc-dropdown>
我有這段代碼,我需要在 python 中使用 selenium 更改選定的下拉串列,但是我無法讓它作業。我已經嘗試了很多事情,包括用這個改變選定的屬性:
dropdown = browser.find_element(By.TAG_NAME, "bc-dropdown")
browser.execute_script("arguments[0].setAttribute('selected',arguments[1])",dropdown, value)
我無法弄清楚如何做到這一點。問題是,如果我手動更改 selected 屬性,則頁面的其余部分根本不會更改,并且由于它不是 select 元素,因此我無法使用 selenium 中已經內置的 select 功能。誰能幫我?
uj5u.com熱心網友回復:
您可以單擊該下拉串列(多年 - 從您的請求中我可以理解),也可以下拉數周 - 并且還拒絕 cookie,以便能夠單擊這些下拉串列 - 使用:
try:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "onetrust-reject-all-handler"))).click()
print('rejected cookies')
except Exception as e:
print('no cookie button!')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'bc-dropdown[options="2021,2022"]'))).click()
print('clicked years dropdown')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div[class^="bc-dropdown bc-wc-select-container"]'))).click()
print('clicked the weekly dropdown')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div[class^="bc-week-dropdown-width dropdown-menu"]'))).find_element(By.CSS_SELECTOR, 'div[data-value="Week 13"]').click()
print('selected Week 13')
不要忘記 F.Hoque 在他的回復中提到的進口。Selenium 檔案可以在https://www.selenium.dev/documentation/找到
另一種想法是:可以以更健壯的方式獲取您所追求的實際資料,抓取為該頁面提供水分的 GraphQL 端點。如果你能很好地問 F.Hoque,他可能會傾向于告訴你這件事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/506698.html
