【发布时间】:2021-07-07 23:30:12
【问题描述】:
我遇到了一个问题,在我的一生中,我无法弄清楚为什么它不起作用,尤其是因为用法应该非常简单。我根本无法等待在 Selenium 中工作。隐式和显式等待都不起作用,我不知道为什么。
这是我的代码:
from os import times
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
import json
from dataclasses import dataclass, asdict
import time
USER_NAME = "username"
PASSWORD = "password"
options = webdriver.ChromeOptions()
options.add_argument('--igcognito')
#options.add_argument('--headless')
driver = webdriver.Chrome('c:\\path\\to\\chromedriver.exe',options=options)
driver.get("URL")
driver.find_element_by_name("username").send_keys(USER_NAME)
driver.find_element_by_name("password").send_keys(PASSWORD)
driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div[2]/form/button").click()
driver.get("URL")
driver.implicitly_wait(30)
expansion_buttons = driver.find_elements_by_class_name("class-control")
print(len(expansion_buttons))
for x in range(len(expansion_buttons)):
driver.execute_script("arguments[0].click();", expansion_buttons[x])
#time.sleep(120)
#driver.implicitly_wait(60)
try:
wait = WebDriverWait(driver, 120)
wait.until(expected_conditions.visibility_of_all_elements_located((By.CLASS_NAME, "stuff")))
finally:
# driver.quit()
pass
vehicles_classes = driver.find_elements_by_class_name("stuff")
print(len(vehicles_classes))
【问题讨论】:
-
您的问题是关于 Java 还是 Python?它应该是其中之一,而不是两者,否则问题可能会结束。
-
Python 真的和显式和隐式等待的问题。
-
你从哪里得到异常?
-
我想我真的想通了。我误解了等待是如何实现的。此外,如果元素未在 DOM 中列出,则显式等待似乎不起作用。基本上,我有单击和展开的按钮,然后附加数据填充页面。但是我相信在实际单击按钮之前,包含这些数据的元素是不存在的。现在,如果我只能找出为什么我的 xPath 在 Python 中有效,而在 Java 中无效。
-
您的问题得到解答了吗?如果是,请接受。