相关疑难解决方法(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万
查看次数

webdriver的官方定位策略

官方W3c webdirver文档中,明确指出位置策略是:

State   Keyword
CSS selector    "css selector"
Link text selector  "link text"
Partial link text selector  "partial link text"
Tag name    "tag name"
XPath selector  "xpath"
Run Code Online (Sandbox Code Playgroud)

但是,Selenium的电线协议允许:

class name  
css selector
id  
name
link text
partial link text
tag name
xpath
Run Code Online (Sandbox Code Playgroud)

在理论中,Selenium的文档已经过时,"真实"的故事在新的规范文档中.然而...

我在最新的Chrome自己的Webdriver上运行了一些测试,我可以确认这一点,name并且class name两者都有效; 但是,它们不符合规格.

我记得在Chromium问题上阅读他们只会实现官方的Webdriver规范.

现在:我知道通用答案,其中"规格并不总是100%遵循"等.但是,我想知道的是:

  • 你能找到Chromium中实现这个的代码吗?(链接将是最受欢迎的)
  • 在Chromium邮件列表中是否有关于这些的讨论?
  • "非官方"命令("旧"硒规格文件中记录的)可能会留下来吗?你在哪里读到的?

javascript selenium google-chrome chromium chrome-web-driver

12
推荐指数
1
解决办法
5128
查看次数

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

WebDriver 中有多少种点击 webElement 的方法?

据我所知,用户可以通过使用 click 方法和另一种方式(例如使用带有 ASCII 值的 Sendkey 方法进行左键单击)来单击特定的 Webelement。

By Click Method: driver.findElement(By.cssSelector(".dbl")).click();

By Ascii Value : driver.findElement(By.cssSelector(".dbl")).sendKey("ASCII VALUE FOR Left Click");
Run Code Online (Sandbox Code Playgroud)

除此之外还有一种方法可以执行点击操作吗?

java selenium selenium-webdriver

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

如何通过Java使用XPath和Selenium WebDriver单击SVG元素

我有一个SVG带有几个矩形元素的对象。使用geckodriver,我试图单击主要SVG对象之一。但是,使用xpath-checker我无法检测到正确的xpath到相同值。

到现在为止,我可以深入了解以下内容xpath

id('avg_score_chart')/div/div[1]/*[local-name()='svg' and namespace-uri()='http://www.w3.org/2000/svg']
Run Code Online (Sandbox Code Playgroud)

我的HTML代码如下:

<div id="avg_score_chart" class="chart" style="height: 250px; color: black ! important; overflow: hidden; text-align: left;">
<div class="amcharts-main-div" style="position: relative;">
<div class="amcharts-chart-div" style="overflow: hidden; position: relative; text-align: left; width: 525px; height: 212px; padding: 0px;">
<svg version="1.1" style="position: absolute; width: 525px; height: 212px; top: 0.450012px; left: -0.5px;">
<desc>JavaScript chart by amCharts 3.17.1</desc>
<g>
<g>
<g>
<g>
<g>
<g>
<g transform="translate(60,52)">
<g transform="translate(96,41)">
<g transform="translate(96,123)">
<g transform="translate(96,123)"> …
Run Code Online (Sandbox Code Playgroud)

selenium xpath svg amcharts selenium-webdriver

5
推荐指数
1
解决办法
3462
查看次数

Python:find_element_by_css_selector

我正在尝试使用 webdriver 单击登录按钮

<a class="login-btn" href="javascript:;" data-bind="click:loginSection.loginClick">
    <span class="btn-text">Login</span>
</a>
Run Code Online (Sandbox Code Playgroud)

我的代码:

submit=driver.find_element_by_css_selector('a.login-btn').click()
Run Code Online (Sandbox Code Playgroud)

或试试这个代码:

submit=driver.find_element_by_class_name('login-btn').click()
Run Code Online (Sandbox Code Playgroud)

这些都不起作用,需要一些建议。提前致谢

错误:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"a.login-btn"}
Run Code Online (Sandbox Code Playgroud)

python selenium css-selectors web-scraping selenium-webdriver

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

使用 selenium python 点击​​ svg

svg 图标是可点击的。

<div class="some-class">
    <svg aria-label="Search" class="some-icon" width="24" height="24" fill="#000" viewBox="0 0 24 24">
        <path d="M9.5,...,5 9.5,5Z">
        </path>
    </svg>
</div>
Run Code Online (Sandbox Code Playgroud)

示例代码:

from selenium import webdriver

driver = webdriver.Chrome(CHROME_DRIVER_LOCATION)
driver.find_element_by_xpath('//*[@id="SearchForm"]/div[1]/span/div[1]/div[2]/svg/path').click()
Run Code Online (Sandbox Code Playgroud)

错误:

没有这样的元素:无法定位元素:{"method":"xpath","selector":"///*[@id="SearchForm"]/div[1]/span/div[1]/div[2 ]/svg/路径"}

python selenium xpath svg webdriver

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