相关疑难解决方法(0)

如何通过 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
查看次数

为什么我应该使用CSS选择器而不是XPath进行自动化测试?

请帮助我理解为什么使用CSS选择器甚至是自动测试的选项.我一直在我的工作场所使用Ghost Inspector工具为我们的东西创建了大量的自动化测试.此工具为您提供了使用XPath的CSS选择器intead的选项.为什么?

XPath比CSS更耐用.任何给定UI上的CSS几乎每周都会在某些项目/功能上发生变化.这使得测试极其脆弱并且容易经常破裂.

是因为大多数新的测试编写者不想学习任何XPath并希望坚持基础知识吗?CSS选择器看起来比XPath语法更漂亮?请说服我.谢谢.

selenium xpath automation css-selectors

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

Python + Selenium:等到元素完全加载

所以我一直在尝试使用 Selenium 中调用的函数:

wait = WebDriverWait(browser, 20).wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="accountStandalone"]/div/div/div[2]/div/div/div[1]/button')))
wait.click()
Run Code Online (Sandbox Code Playgroud)

在我开始说这个问题之前。我想要做的 Selenium 基本上是制作一个自动写入这张图片中的论坛的 Selenium:

图1

这不是任何并发症。但是,每当我按下“Skapa Konto”时,它都会加载并等待新页面出现,即:

图2

就是上图。我的想法是,我希望它应该等到它给我那个“图片”(这是同一个链接,所以它不会做任何更改)所以我认为更好的做法是等到文本等“FORTSÄTT或 HELLO”是浏览器。然后继续。

但是,我在尝试使用它时遇到了问题。原因是它不会等到找到它,而是立即执行它不应该做的其他事情。现在它只是跳过等待,就像该功能不起作用或根本不存在一样。我做错了什么?


更新:

我所知道的是,每当我尝试在网站上注册时 - 该网站不会改变,这意味着当它成为一个成功的帐户时,它会将我带到一个新页面。但它会自动刷新并说它成功了。所以这意味着我想以某种方式制作一些东西,它检查并查看页面是否发生了新的事情。如果没有,再等等再试一次?...类似的东西?

我会做的是等检查是否有:

<div class="confirmation-title nsg-font-family--platform nsg-text--black edf-title-font-size--xlarge js-confirmationTitle">NU ÄR DU MEDLEM, Hello.</div>
Run Code Online (Sandbox Code Playgroud)

或者

<button type="button" class="nsg-button nsg-bg--black register-next-step-cta js-nextStepCta">FORTSÄTT</button>
Run Code Online (Sandbox Code Playgroud)

然而,问题正如我所说,每当我按下“SKAPA KONTO” - 它只是等待服务器再次检查,然后自动刷新页面并说成功。

python selenium webdriver selenium-webdriver webdriverwait

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