0

我正在使用硒做一些测试。我创建了函数来做我需要重复的事情。问题是,当我在函数内部运行 get 元素时,我什么也没有得到,而当我直接运行它时,一切正常。这是我的代码:

import selenium as se
import datetime
from datetime import timedelta 
from selenium import webdriver
import time
browser = webdriver.Chrome(executable_path='selenuim/Chromedriver')
browser.get('XXX') 
def download(browser):
    print(browser);
    download =browser.find_elements_by_xpath('//button[contains(text(), 
      "Télécharger au format CSV")]')[0];
    download.click()
    print('modal='+ 
      str(browser.find_elements_by_class_name('modal_content')));
    modal = browser.find_elements_by_class_name('modal_content')[0]
    form = modal.find_elements_by_class_name("form-group")[0]
    print('form='+form);
    time.sleep(1)
    DestInfo = form.find_elements_by_xpath('//label[contains(text(), 
      "Afficher les informations sur le destinataire")]')[0];
    DestInfo.click()
    CustomField = form.find_elements_by_xpath('//label[contains(text(), 
       "Afficher les champs personnalisés")]')[0];
    CustomField.click()

当我跑步时

download(browser)

我什么也没得到,列表是空的

<selenium.webdriver.chrome.webdriver.WebDriver (session="ca2d70cc17b9205c66d9509d55672142")>
modal=[]

当我直接运行时,我得到了 1 个元素

browser.find_elements_by_class_name('modal_content')

我明白了

[<selenium.webdriver.remote.webelement.WebElement (session="ca2d70cc17b9205c66d9509d55672142", element="185869a1-dc9a-4f8f-bc4d-22214b55974e")>]
4

1 回答 1

0

也许您需要等待modal-content web 元素出现。尝试添加睡眠或使用硒服务员

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By

timeout = 5
wait = WebDriverWait(browser, timeout, poll_frequency=1)
wait.until(
  method=ec.presence_of_element_located((By.XPATH, "//*[@class='modal_content']")))  # put your selector
于 2019-11-12T13:05:33.920 回答