这个元素是一个多选区域选择器,但我不知道如何与其交互。
HTML 元素
<div class="Input_select__uImQR Region_select__1h_yh"><span>NA</span><ul><li
data-value="na">NA</li><li data-value="sa">SA</li><li data-value="eu">EU</li><li data-
value="ap">AP</li><li data-value="kr">KR</li></ul></div>
Run Code Online (Sandbox Code Playgroud)
当您手动单击列表时,类名称将更改为
<div class="Input_select__uImQR Region_select__1h_yh Input_open__3e__v">
Run Code Online (Sandbox Code Playgroud)
代码
driver.get("https://www.valorant.store/")
time.sleep(1)
clickshop = driver.find_element_by_class_name("SkinsBundle_loggedOut__3kG35").click()
time.sleep(2)
usernameshop = driver.find_element_by_name("username")
usernameshop.send_keys(name)
passwordshop = driver.find_element_by_name("password")
passwordshop.send_keys("notmypassword")
driver.find_element_by_xpath("//option[@value='eu']").click()
time.sleep(10)
usernameshop.send_keys(Keys.RETURN)
Run Code Online (Sandbox Code Playgroud)
以下是全部代码(该账号用于测试,您可以随意使用)
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
import sys, os
driver = webdriver.Firefox()
skinfound = bool(False)
while skinfound == False:
driver.maximize_window()
driver.get("https://www.valorant.store/")
time.sleep(1)
clickshop =driver.find_element_by_class_name("SkinsBundle_loggedOut__3kG35").click()
time.sleep(2)
usernameshop = driver.find_element_by_name("username")
usernameshop.send_keys("sy9e0w6uimpc6fek")
passwordshop = driver.find_element_by_name("password")
passwordshop.send_keys("2ejly4ocpwifjbhj")
driver.find_element_by_xpath("//li[@data-value='eu']").click()
time.sleep(10)
usernameshop.send_keys(Keys.RETURN)
time.sleep(10)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//img[@src='/images/bonuscard.png' and @alt='Card Icon']"))).click()
time.sleep(2)
skins = driver.find_element_by_class_name("NightMarket_itemsGrid__9e2S-").text
print(skins)
if "Prime" in skins:
print("A Prime skin was found")
skinfound = True
else:
print("skinwasnotfound")
Run Code Online (Sandbox Code Playgroud)
我没有看到这个 xpath
//option[@value='eu']
Run Code Online (Sandbox Code Playgroud)
在共享的HTML中。
如果这是 HTML
<li data-value="eu">EU</li>
Run Code Online (Sandbox Code Playgroud)
你可以将 xpath 写为:
//li[@data-value='eu']
Run Code Online (Sandbox Code Playgroud)
或者
//li[text()='EU']
Run Code Online (Sandbox Code Playgroud)
在代码中,您可以像这样使用它:
driver.find_element_by_xpath("//li[@data-value='eu']").click()
Run Code Online (Sandbox Code Playgroud)
或者
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//li[text()='EU']"))).click()
Run Code Online (Sandbox Code Playgroud)
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Run Code Online (Sandbox Code Playgroud)
更新1:
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.valorant.store/")
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='LOGIN']/.."))).click()
wait.until(EC.visibility_of_element_located((By.NAME, "username"))).send_keys('user name here')
wait.until(EC.visibility_of_element_located((By.NAME, "password"))).send_keys('password here')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class^='Input_select'] span"))).click()
time.sleep(2)
wait.until(EC.visibility_of_element_located((By.XPATH, "//li[@data-value='eu']"))).click()
Run Code Online (Sandbox Code Playgroud)
这应该对你有用。
如果您需要处理登录前某个时间出现的弹出窗口,您可以使用以下代码:
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.valorant.store/")
wait = WebDriverWait(driver, 20)
try:
if(len(driver.find_elements(By.XPATH, "(//i[@class='fas fa-times']/..)[2]"))) > 0:
print("Alert is present")
wait.until(EC.element_to_be_clickable((By.XPATH, "(//i[@class='fas fa-times']/..)[2]"))).click()
else:
print("Alert is not present")
except:
print("Something went wrong related to alert, may be it was not visible, but code will work")
pass
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='LOGIN']/.."))).click()
wait.until(EC.visibility_of_element_located((By.NAME, "username"))).send_keys('user name here')
wait.until(EC.visibility_of_element_located((By.NAME, "password"))).send_keys('password here')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class^='Input_select'] span"))).click()
time.sleep(2)
wait.until(EC.visibility_of_element_located((By.XPATH, "//li[@data-value='eu']"))).click()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7393 次 |
| 最近记录: |