怎样开始写第一个基于python的selenium脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样开始写第一个基于python的selenium脚本相关的知识,希望对你有一定的参考价值。

1、下载并安装python

2、安装selenium下载并解压缩selenium-2.32.0.tar.gz. 把selenium-2.32.0\\py\\下的selenium整个文件夹放入Python33\\Lib\\site-packages目录下。

3 下载Eclipse后安装pydev插件

4 打开eclipse创建pydev project,并添加一个Pydev Module 输入一下代码
# coding=gbk
from selenium import webdriver
from selenium.webdriver.common import by

if __name__ == \'__main__\':
firefoxDriver=webdriver.Firefox()
firefoxDriver.get("http://www.baidu.com")
ele=firefoxDriver.find_element(by.By.ID,"kw")
ele.send_keys("hello")

5要想支持IE,下载IEDriverServer,解压缩之后,将exe程序放在安装python的根目录下。

6、运行过程中如果出现WebDriverException: Message: u\'Unexpected error launching
Internet Explorer. Protected Mode settings are not the same for all
zones. Enable Protected Mode must be set to the same value (enabled or
disabled) for all zones.\'
这个错误,更改IE的internet选项->安全,将Internet/本地Internet/受信任的站定/受限制的站点中的启用保护模式全部
去掉勾,或者全部勾上。下面是一个IE的例子,打开百度,自动搜索selenium。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Ie()
driver.get("xxx")
elem = driver.find_element_by_name("wd")
elem.send_keys("selenium")
elem.send_keys(Keys.RETURN)

完成上述步骤,你已经写了第一个基于python的selenium 脚本了
参考技术A 经常发现很多同学装好了python+selenium webdriver开发环境后不知道怎么去查看api文档,在这里乙醇简单介绍一下具体方法,其实非常简单。 首先打开命令行,在doc窗口输入: python -m pydoc -p 4567 简单解释一下: python -m pydoc表示打开pydo 参考技术B 百度或google:python selenium
上selenium的官网找实例

Python selenium,我怎样才能删除一个元素?

【中文标题】Python selenium,我怎样才能删除一个元素?【英文标题】:Python selenium, how can i delete an element? 【发布时间】:2014-04-26 05:42:49 【问题描述】:

我在最后一个小时一直在尝试删除一个元素,但没有成功。并且该元素只能通过类名访问。 我试过了:

js = "var aa=document.getElementsByClassName('classname')[0];aa.parentNode.removeChild(aa)"
driver.execute_script(js)

我收到错误提示 parentNode 未定义。

那么使用 Selenium 删除元素的最佳方法是什么?

【问题讨论】:

【参考方案1】:

感谢路易斯的意见。我使用您建议的 JavaScript 构建了以下 python 函数:

def excludeTagFromWebDriver(driver : WebDriver, selector : str):
    i = 0
    soup = BeautifulSoup(driver.page_source, 'html.parser') # Parsing content using beautifulsoup
    while soup.find(selector):
        # print(soup.find(selector))
        js = """
            var element = document.querySelector(""" + "'" + selector + "'" + """);
            if (element)
                element.parentNode.removeChild(element);
            """
        driver.execute_script(js)
        soup = BeautifulSoup(driver.page_source, 'html.parser') # Parsing content using beautifulsoup
        i += 1
        # print('Removed tag with selector ' + "'" + selector + "'" + ' with nr: ', i)
    print('Removed ' + str(i) + ' tags with the selector ' + "'" + selector + "'" + " and all it's children tags.")
    return driver

driver = excludeTagFromWebDriver(driver,"sup")

【讨论】:

【参考方案2】:

我不知道专门用于删除元素的 Selenium 方法。但是,您可以这样做:

element = driver.find_element_by_class_name('classname')
driver.execute_script("""
var element = arguments[0];
element.parentNode.removeChild(element);
""", element)

find_element_by_class_name 会在元素不存在时引发异常。因此,您不必测试 element 是否设置为合理值。如果方法返回,则设置它。然后将元素传回execute_script。在 Python 中传递给 execute_script 的参数在 JavaScript 中显示为 arguments 对象。 (它与您通常使用任何 JavaScript 函数获得的 arguments 对象相同。在幕后 Selenium 将 JavaScript 代码包装在一个匿名函数中。)

或者您可以使用依赖于 JavaScript 的解决方案来查找元素:

driver.execute_script("""
var element = document.querySelector(".classname");
if (element)
    element.parentNode.removeChild(element);
""")

如果您碰巧使用远程服务器来运行测试(如 Sauce Labs 或 BrowserStack),则此解决方案要好得多。 Selenium 客户端和服务器之间的通信成本不可忽略。

【讨论】:

【参考方案3】:

getElementByClassName 不是document 上的方法。你会想要使用

getElementsByClassName('classname')[0]...

但前提是您确定它是唯一具有该课程的人。

【讨论】:

哦,谢谢我也编辑了它,但关于如何删除元素的问题仍然存在:) 你的方法应该有效。如果 .parentNode 未定义,则 aa 不是节点(或者是主体标签或其他东西)。你添加[0]了吗? 我做了,然后添加了“要删除的对象”,现在它可以工作了,感谢您的帮助!

以上是关于怎样开始写第一个基于python的selenium脚本的主要内容,如果未能解决你的问题,请参考以下文章

怎样开始用selenium进行自动化测试

Python+Selenium练习篇之1-摘取网页上全部邮箱

基于python的Selenium使用

对于使用 Python 的 Selenium,我怎样才能让它按 CTRL、SHIFT、i?

怎样开始用selenium进行自动化测试?

基于Selenium2与Python自动化测试环境搭建