我試圖從本網站的第二個表格中選擇所有 264 個收件人,我使用了以下代碼:
s = Service('./chromedriver.exe')
driver = webdriver.Chrome(service=s)
url = "https://armstrade.sipri.org/armstrade/page/trade_register.php"
driver.get(url)
sleep(5)
這是回圈:
for b in range(1, 264):
Recipients = driver.find_element(By.XPATH, "//*[@id='selFrombuyer_country_code']/option[%d]" % b)
Recipients.click()
sleep(0.2)
# click "ADD" option
driver.find_element(By.XPATH, "/html/body/font/div/form/table/tbody/tr[3]/td/table/tbody/tr/td[2]/input[1]").click()
sleep(0.2)
當我測驗這段代碼時,回圈作業......部分:它跳過隨機元素并且只選擇了一半的元素。
以下是我的回圈忽略的一些元素,它們看起來非常正常:
//*[@id="selFrombuyer_country_code"]/option[2]
//*[@id="selFrombuyer_country_code"]/option[26]
為什么我的回圈不能遍歷所有元素?
uj5u.com熱心網友回復:
這應該適合你。沒有硬編碼的范圍:
# Below are the Additional imports needed
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Code after the driver is instantiated
driver.get("https://armstrade.sipri.org/armstrade/page/trade_register.php")
c_codes = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@id='selFrombuyer_country_code']//option")))
print(len(c_codes))
ls1=[]
ls2=[]
for each_code in c_codes:
ls1.append(each_code.text)
each_code.click()
time.sleep(0.2)
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='selFrombuyer_country_code']/..//..//input[contains(@value, 'Add')]"))).click()
all_c = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@name='selselTobuyer_country_code']//option")))
for each_c in all_c:
ls2.append(each_c.text)
print(len(ls1))
print(len(ls2))
print(ls1)
print(ls2)
driver.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/471185.html
