相关疑难解决方法(0)

@property装饰器如何工作?

我想了解内置函数的property工作原理.令我困惑的是,property它也可以用作装饰器,但它只在用作内置函数时才需要参数,而不是用作装饰器时.

这个例子来自文档:

class C(object):
    def __init__(self):
        self._x = None

    def getx(self):
        return self._x
    def setx(self, value):
        self._x = value
    def delx(self):
        del self._x
    x = property(getx, setx, delx, "I'm the 'x' property.")
Run Code Online (Sandbox Code Playgroud)

property的论点是getx,setx,delx和文档字符串.

在下面的代码中property用作装饰器.它的对象是x函数,但在上面的代码中,参数中没有对象函数的位置.

class C(object):
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x
Run Code Online (Sandbox Code Playgroud)

而且,如何在 …

python properties decorator python-internals python-decorators

889
推荐指数
12
解决办法
46万
查看次数

使用Selenium将元素滚动到视图中

在Selenium 1.x或2.x中是否有任何方法可以滚动浏览器窗口,以便XPath识别的特定元素可以在浏览器中查看?Selenium中有一个焦点方法,但它似乎没有在FireFox中物理滚动视图.有没有人对如何做到这一点有任何建议?

我需要这个的原因是我正在测试页面上元素的点击.不幸的是,除非元素可见,否则事件似乎不起作用.我无法控制单击该元素时触发的代码,因此我无法对其进行调试或修改,因此,最简单的解决方案是将项目滚动到视图中.

selenium scroll automated-tests

185
推荐指数
12
解决办法
38万
查看次数

scrollIntoView vs moveToElement

在Selenium WebDriver中,将元素放入可见区域有两种主要方法:

  1. 滚动到视图中:

    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用moveToElement浏览器操作:

    Actions actions = new Actions(driver);
    actions.moveToElement(element);
    actions.perform();
    
    Run Code Online (Sandbox Code Playgroud)

这些方法是否相同,应该首选哪一种?

html javascript java selenium selenium-webdriver

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

如何在Python Selenium中逐步向下滚动

大家好,我是 Selenium 和 Python 的新手。我刚刚抓取了pagalguy 网站。我知道如何向下滚动到页面底部,但我需要的是逐步向下滚动,以便 Selenium 单击所有“阅读更多”按钮,但我不知道如何像这样逐步向下滚动,所以我像下面这样对它进行了硬编码

browser.execute_script("window.scrollTo(0,300);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(300,600);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(600,900);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(900,1200);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(1200,1500);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(1500,1800);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(1800,2100);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(2100,2500);")
browser.find_element_by_link_text("Read More...").click()
it goes on .......
Run Code Online (Sandbox Code Playgroud)

我尝试使用 while 循环自动执行它,但它导致了错误,上面的循环有效,但我希望它短且循环,以便我可以将它用于具有不同页面长度的所有其他页面。

initial_value = 0
next_value = 300
while next_value<300000: 
  browser.execute_script("window.scrollTo(initial_value,next_value);")
  browser.find_element_by_link_text("Read More...").click()
  initial_value=next_value
  next_value+=300
Run Code Online (Sandbox Code Playgroud)

JavascriptException:消息:ReferenceError:initial_value 未定义

但我已经定义了值,我想我解释了我实际上想要做什么,我想自动向下滚动并单击所有阅读更多按钮,然后我将获得全文内容

python selenium web-crawler web-scraping python-3.x

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

滚动到 Selenium 中的下一个元素 (Python)

我正在尝试用 Python 中的 Selenium 制作一个 facebook 评论机器人。我需要向下滚动到评论中上传照片的按钮才能发表评论,我有这行代码:

ActionChains(driver).move_to_element(driver.find_element_by_id('my-id')).perform()
Run Code Online (Sandbox Code Playgroud)

当我再次运行它时,它会滚动到同一个按钮,我需要滚动到下一个按钮。还有另一个问题:这个按钮没有 id。有什么办法可以做到吗?

python selenium

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