小编Rat*_*nov的帖子

如何使用Python + Selenium WebDriver保存和加载cookie

如何将Python的Selenium WebDriver中的所有cookie保存到txt文件中,然后再加载它们?该文档没有说明getCookies函数的任何内容.

python selenium webdriver

78
推荐指数
6
解决办法
9万
查看次数

Selenium - 如何等待页面完全加载

我正在尝试使用Java和Selenium WebDriver自动化一些测试用例.我有以下场景:

  • 有一个名为"产品"的页面.当我点击"产品"页面中的"查看详细信息"链接时,会出现一个包含该项目详细信息的弹出窗口(模式对话框).
  • 当我点击弹出窗口中的"关闭"按钮时,弹出窗口关闭,页面自动刷新(页面刚刚重新加载,内容保持不变).
  • 关闭弹出窗口后,我需要点击同一页面中的"添加项目"按钮.但是当WebDriver试图找到"添加项目"按钮时,如果互联网速度太快,WebDriver可以找到并单击该元素.

  • 但是如果互联网很慢,WebDriver会在页面刷新之前找到按钮,但只要WebDriver单击该按钮,页面就会刷新并StaleElementReferenceException发生.

  • 即使使用了不同的等待,所有等待条件也变为真(因为重新加载之前和之后页面中的内容相同),甚至在页面重新加载和StaleElementReferenceException 发生之前.

如果Thread.sleep(3000);在单击"添加项目"按钮之前使用测试用例,则工作正常.这个问题还有其他解决方法吗?

java selenium-webdriver

62
推荐指数
3
解决办法
20万
查看次数

webdriver.firefox.marionette和webdriver.gecko.driver之间的区别

我现在正在学习Selenium,遇到了一个问题.

我知道Selenium默认支持旧的Firefox版本,没有驱动程序.对于最新版本的Firefox,我们必须下载驱动程序并使用它来定义它System.setProperty.

根据此链接,对于Firefox 45和46,启动驱动程序代码可能如下所示:

WebDriver driver = new FirefoxDriver();
Run Code Online (Sandbox Code Playgroud)

我的Firefox版本为45.5.1.但是上面的代码仍然不起作用.所以根据这个链接,我添加了:

System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");

它奏效了.

然后我意识到我没有安装geckodriver.exe在我的电脑上.要了解它是如何进行的,我已经更改为以下代码:

System.setProperty("webdriver.firefox.marionette","");
Run Code Online (Sandbox Code Playgroud)

它仍然有效.

所以,这是我的第一个问题:发生了什么?我确信geckodriver.exe在我的环境中不存在.如果没有指出位置,那我为什么要设置属性?

另外,我见过的代码如下:

System.setProperty("webdriver.gecko.driver", "/tools/marionette/wires.exe");
Run Code Online (Sandbox Code Playgroud)

我的第二个问题是,是什么样的区别webdriver.gecko.driverwebdriver.firefox.marionettewires.exegeckodriver.exe

selenium selenium-firefoxdriver selenium-webdriver firefox-marionette geckodriver

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

我在哪里可以找到所有可用ChromeOption参数的列表?

我是阅读手册的大力倡导者.但在这种情况下,尽管在网上搜索了一段时间,但我找不到解释所有可用ChromeOptions参数的手册.某处必须列出所有字符串参数及其含义.

例如,以下是我通过示例绊倒发现的一些内容:

var options = new ChromeOptions();
options.AddArgument("incognito");
options.AddArguments("test-type");
Run Code Online (Sandbox Code Playgroud)

有人可以指导我上市吗?我正在使用C#4.6,Selenium 2.45.

c# selenium-chromedriver

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

不能为Selenium使用chrome驱动程序

我在使用适用于Selenium的Chrome驱动程序时遇到问题.我已将chromedriver下载并保存到C:\ Chrome:

driver = webdriver.Chrome(executable_path="C:/Chrome/")
Run Code Online (Sandbox Code Playgroud)

使用它给我以下错误:

Traceback (most recent call last):
  File "C:\Python33\lib\subprocess.py", line 1105, in _execute_child
    startupinfo)
PermissionError: [WinError 5] Access is denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python33\lib\site-packages\selenium\webdriver\chrome\service.py", line 63, in start
    self.service_args, env=env, stdout=PIPE, stderr=PIPE)
  File "C:\Python33\lib\subprocess.py", line 817, in __init__
    restore_signals, start_new_session)
  File "C:\Python33\lib\subprocess.py", line 1111, in _execute_child
    raise WindowsError(*e.args)
PermissionError: [WinError 5] Access is denied

During handling of the above exception, another exception occurred:

Traceback …
Run Code Online (Sandbox Code Playgroud)

python selenium google-chrome python-3.x python-3.3

30
推荐指数
3
解决办法
6万
查看次数

设置Firefox配置文件以使用Selenium和Java自动下载文件

我想使用Selenium WebDriver和Java验证文件下载.要下载的文件是PDF格式.当WebDriver点击AUT中的"下载"链接时,Firefox会打开以下下载确认窗口:

下载确认窗口

我希望Firefox自动下载文件而不显示上面的确认窗口,所以我使用了以下代码:

FirefoxProfile firefoxProfile=new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList",2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false);
firefoxProfile.setPreference("browser.download.dir",downloadPath);
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
WebDriver driver=new FirefoxDriver(firefoxProfile); 
Run Code Online (Sandbox Code Playgroud)

但仍然Firefox显示相同的窗口.如何设置Firefox配置文件以便自动下载PDF文件而不显示确认对话框?

java selenium-webdriver

19
推荐指数
2
解决办法
3万
查看次数

有没有办法在Excel-VBA中调用Python代码?

我有一个包含宏的Excel文件(Main.xlsm).我有一个Python文件(python.py)来生成一个辅助Excel文件(sub.xlsx),我将在Main.xlsm文件的宏中进一步调用它.这个由python.py运行生成的sub.xlsx文件保存在同一个工作目录中.

现在,我想使这个python.py的Main.xlsm宏的运行过程中被执行,然后使用这个XLSX文件.我基本上想要减少外部执行python.py的步骤.那是否有命令?我是VBA的新手.

python excel vba excel-vba

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

隐藏/沉默ChromeDriver窗口

当我推出Selenium的WebDriver(Chromedriver)时.控制台窗口(chromedriver.exe)运行并打开Chrome.我需要知道如何隐藏那些像静音模式,因为当太多打开时我会变得混乱.我正在使用C#.

c# selenium-chromedriver selenium-webdriver

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

如何在selenium驱动程序中获取整页的innerHTML?

selenium用来点击我想要的网页,然后使用解析网页Beautiful Soup.

有人已经展示了如何获取元素的内部HTMLSelenium WebDriver.有没有办法获取整个页面的HTML?谢谢

示例代码Python (基于上面的帖子,语言似乎并不重要):

from selenium import webdriver
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup


url = 'http://www.google.com'
driver = webdriver.Firefox()
driver.get(url)

the_html = driver---somehow----.get_attribute('innerHTML')
bs = BeautifulSoup(the_html, 'html.parser')
Run Code Online (Sandbox Code Playgroud)

selenium

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

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