【问题标题】:Why Selenium couldn't find any element on page before I used time.sleep()?为什么在我使用 time.sleep() 之前 Selenium 在页面上找不到任何元素?
【发布时间】:2022-01-22 11:38:21
【问题描述】:

我在使用 Selenium 自动执行任务时遇到了这个问题。

代码执行过程是怎样的?

首先seleniumtest.py 内部有两个函数: getGateway()restartRouter()

让我们关注restartRouter() 函数,因为它包含与硒相关的代码,而getGateway() 函数只是我在restartRouter() 中使用的函数,就像这样:driver.get(getGateway())

首先,发生的事情如下:

  1. 启动浏览器并打开提供的网址;

  2. 查找元素用户名和密码

  3. 输入用户名和密码;

  4. 查找登录元素

  5. 点击登录;

  6. 找到另一个按钮

  7. 点击另一个按钮

    ...

有什么问题?

所以,问题开始出现在第 6 步,就在单击登录按钮后(参见代码执行过程,第 6 步)。

点击登录按钮后,它会加载新页面(它不会在新标签中打开它),然后它就不想工作了。

您为解决问题做了什么尝试

我想到的第一件事是在单击登录后使用driver.wait(5),但这不起作用。 我还尝试检查该页面上的任何其他元素是否会导致操作.click()

在那之后,我尝试了等待 - SELENIUM WAITS ;这也没有用。我尝试了两种可能的选择:driver.implicitly_wait(10)WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,"//*[@id=\"mmManagDiag\"]"))。它还给了我错误,我的 USB 设备在使用显式等待时无法正常工作。

这些都不起作用。

什么对我有用?

在解决它之后,我想到尝试使用time.sleep(3),突然它奏效了。

我的最后一个问题 所以,我想知道为什么 Selenium 在我使用 time.sleep() 之前在该页面上找不到任何元素?

Selenium 等待和time.sleep() 不是几乎一回事吗?

代码

 driver = webdriver.Chrome('./chromedriver')
driver.get(getGateway())
#Frm_Username
username = driver.find_element(By.NAME,'Frm_Username')
username.clear()
username.send_keys("user")
#Frm_Password
passwrd = driver.find_element(By.NAME,"Frm_Password")
passwrd.clear()
passwrd.send_keys("user")
#passwrd.send_keys(Keys.RETURN)
driver.find_element(By.XPATH,"//*[@id=\"LoginId\"]").click()
time.sleep(3)
driver.find_element(By.XPATH,"//*[@id=\"mmManagDiag\"]").click()
time.sleep(3)
driver.find_element(By.XPATH,"//*[@id=\"mmManagDevice\"]").click()
time.sleep(3)
driver.find_element(By.XPATH,"//*[@id=\"Btn_restart\"]").click()
time.sleep(3)
driver.find_element(By.XPATH,"//*[@id=\"confirmOK\"]").click()
driver.quit()

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    等待元素出现可能不足以点击它。

    尝试等待元素可点击。

    WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, "your xpath value"))
        ).click()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多