相关疑难解决方法(0)

Selenium - 等待元素出现、可见和可交互

我有一个 Selenium 脚本(Python),它点击回复按钮使anonemail类出现。anonemail 类出现的时间各不相同。因此,我必须使用 sleep 直到元素出现。

我想等到课程出现而不是使用睡眠。我听说过等待命令,但我不知道如何使用它们。

这是我迄今为止所拥有的:

browser.find_element_by_css_selector(".reply-button").click()
sleep(5)
email=browser.find_element_by_css_selector(".anonemail").get_attribute("value")
Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver webdriverwait expected-condition

37
推荐指数
5
解决办法
6万
查看次数

WebDriverWait 未按预期工作

我正在使用硒来抓取一些数据。

我点击的页面上有一个按钮说“custom_cols”。此按钮为我打开一个窗口,我可以在其中选择我的列。

这个新窗口有时需要一些时间才能打开(大约 5 秒)。所以为了处理这个我用过

WebDriverWait 
Run Code Online (Sandbox Code Playgroud)

延迟为 20 秒。但有时它无法在新窗口中选择查找元素,即使该元素可见。这种情况只有十次发生一次,其余时间它都可以正常工作。

我也在其他地方使用了相同的功能(WebDriverWait),它按预期工作。我的意思是它会等到元素可见,然后在找到它的那一刻点击它。

我的问题是为什么即使我正在等待元素可见,新窗口上的元素也不可见。要在这里添加,我试图增加延迟时间,但我仍然偶尔会遇到该错误。

我的代码在这里

def wait_for_elem_xpath(self, delay = None, xpath = ""):
    if delay is None:
        delay = self.delay

    try:
        myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))
    except TimeoutException:
        print ("xpath: Loading took too much time!")
    return myElem
select_all_performance = '//*[@id="mks"]/body/div[7]/div[2]/div/div/div/div/div[2]/div/div[2]/div[2]/div/div[1]/div[1]/section/header/div'
self.wait_for_elem_xpath(xpath = select_all_performance).click()
Run Code Online (Sandbox Code Playgroud)

python selenium web-scraping webdriverwait expected-condition

8
推荐指数
1
解决办法
6874
查看次数

如何通过 Selenium Python 点击​​某个元素

我正在尝试使用 selenium 浏览器 python 获取 facebook 帐户的数据,但无法找到我可以在单击导出按钮时查找的元素。

请参阅随附的屏幕截图在此输入图像描述

我尝试过,但似乎给我的班级带来了错误。

def login_facebook(self, username, password):
    chrome_options = webdriver.ChromeOptions()
    preference = {"download.default_directory": self.section_value[24]}

    chrome_options.add_experimental_option("prefs", preference)
    self.driver = webdriver.Chrome(self.section_value[20], chrome_options=chrome_options)
    self.driver.get(self.section_value[25])

    username_field = self.driver.find_element_by_id("email")
    password_field = self.driver.find_element_by_id("pass")

    username_field.send_keys(username)
    self.driver.implicitly_wait(10)

    password_field.send_keys(password)
    self.driver.implicitly_wait(10)

    self.driver.find_element_by_id("loginbutton").click()
    self.driver.implicitly_wait(10)

    self.driver.get("https://business.facebook.com/select/?next=https%3A%2F%2Fbusiness.facebook.com%2F")
    self.driver.get("https://business.facebook.com/home/accounts?business_id=698597566882728")
    self.driver.get("https://business.facebook.com/adsmanager/reporting/view?act="
                    "717590098609803&business_id=698597566882728&selected_report_id=23843123660810666")
    # self.driver.get("https://business.facebook.com/adsmanager/manage/campaigns?act=717590098609803&business_id"
    #                 "=698597566882728&tool=MANAGE_ADS&date={}-{}_{}%2Clast_month".format(self.last_month,
    #                                                                                      self.first_day_month,
    #                                                                                      self.last_day_month))

    self.driver.find_element_by_id("export_button").click()
    self.driver.implicitly_wait(10)
    self.driver.find_element_by_class_name("_43rl").click()
    self.driver.implicitly_wait(10)
Run Code Online (Sandbox Code Playgroud)

您能告诉我如何单击“导出”按钮吗?

selenium xpath css-selectors python-2.7 webdriverwait

7
推荐指数
1
解决办法
6816
查看次数

如何在 Python 中使 Selenium WebDriver 休眠几毫秒

time在我的脚本中使用库:

import time
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

它可以让我的 Selenium WebDriver 休眠一秒钟,但 250 毫秒怎么可能呢?

python selenium webdriver selenium-webdriver webdriverwait

6
推荐指数
1
解决办法
2万
查看次数