相关疑难解决方法(0)

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

Selenium WebDriver:等待加载JavaScript的复杂页面

我有一个用Selenium测试的Web应用程序.页面加载时会运行很多JavaScript.
这段JavaScript代码编写得不是很好,但我无法改变任何东西.所以等待元素出现在DOM中的findElement()方法不是一种选择.
我想在Java中创建一个通用函数来等待页面加载,可能的解决方案是:

  • 从WebDriver运行JavaScript脚本并将结果存储document.body.innerHTML在字符串变量中body.
  • body变量与之前版本进行比较body.如果它们相同则设置增量计数器,notChangedCount否则设置notChangedCount为零.
  • 等待一个小时(例如50毫秒).
  • 如果页面没有改变一段时间(例如500毫秒),notChangedCount >= 10那么退出循环,否则循环到第一步.

你认为这是一个有效的解决方案吗?

c# java selenium webdriver selenium-webdriver

95
推荐指数
6
解决办法
14万
查看次数

如何在phantomjsdriver selenium c#中启用cookie?

以下是我的代码:

case BrowserType.PhantomJS:
               var service = PhantomJSDriverService.CreateDefaultService(Path.Combine(_rootPath, @"Packages\"));
               var cookieFilePath=Path.Combine(_rootPath, @"Packages\cookie.txt");
                 if (!File.Exists(cookieFilePath))
                       File.Create(cookieFilePath);

                 var phantomjsoptions = new PhantomJSOptions();
                 driver = new PhantomJSDriver(service,phantomjsoptions);
                 var cookieJar = driver.Manage().Cookies;
                 driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);
                 cookieJar.AddCookie(new Cookie("x", "12345"));
                 return driver;
Run Code Online (Sandbox Code Playgroud)

基本上问题是我无法登录我的测试应用程序因为我收到错误说 -

"您的浏览器设置为阻止Cookie"

我已经尝试了一切,但我似乎无法得到解决方案.
我该怎么办?
请帮帮我.
如果遗漏了一些细节,请告诉我.

c# selenium automation headless phantomjs

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

如何在Web驱动程序中检查页面是否完全加载?

我正在编写一些Java Webdriver代码来自动化我的应用程序.如何正确检查页面是否已加载?该应用程序也有一些Ajax调用.

我已经声明了WebDriver的隐式等待.

jquery selenium webdriver wait

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

Python Selenium - 等待表单提交后加载下一页

我使用Python3和Selenium firefox提交表单,然后获取他们随后登陆的URL.我是这样做的

inputElement.send_keys(postnumber)
inputElement.submit()

time.sleep(5)

# Get Current URL
current_url = driver.current_url
print ( " URL : %s" % current_url )
Run Code Online (Sandbox Code Playgroud)

这大部分时间都在工作,但有时页面加载时间超过5秒,我得到旧URL,因为新的URL还没有加载.

我该怎么做?

python selenium selenium-webdriver

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

如何在通过JS事件加载新页面时使Selenium WebDriver等待页面加载

我正在努力自动化一个网站,该网站有许多通过JS事件加载新页面的链接.基本上,有些元素是可点击的,点击一个元素会导致一些JavaScript运行,这会导致表单被提交并路由到新页面.

现在,如果这些只是标准的HTML链接,那就没有问题,因为Selenium非常聪明,可以告诉他们有一个新页面即将来临并等待做事.但是,尽管如此,Selenium无法分辨出这个实例中的点击是否会导致新页面加载,因此它不会等待并且继续前进.因此它不会等待新页面,尝试查找不存在的元素,我的测试都会失败.游民.

作为临时解决方案,我只是将程序暂停三秒钟,如下所示:

oldPageDriver.clickThatButton();

try {
  Thread.sleep(3000);
} catch(InterruptedException ex) {
  Thread.currentThread().interrupt();
}

newPageDriver = new NewPageDriver(driver);
newPageDriver.doStuffOnNewPage();
Run Code Online (Sandbox Code Playgroud)

这有点工作.我不喜欢它,因为它是"hacky",只是打断程序而不是做一些更聪明的事情.因为延迟是在三秒钟硬编码,所以如果链接工作但是速度慢,我会失败.我已经考虑过类似于隐式等待的东西,但它完成了同样的事情,并且在经过大量研究后,我在Java中找不到可靠,可行的答案.

那么,任何人都可以建议解决这个问题吗?具体来说,如何让Selenium知道一个新的页面,并等到它可用?

selenium webdriver

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

等待页面在 Selenium 中完全加载

我在 Java 中使用 selenium。我想在该页面上执行任何操作之前等待页面完全加载。

我尝试了以下方法,但未能按预期工作。

public void waitForElementToBeVisible(final WebElement element) {

    WebDriverWait wait = new WebDriverWait(WebDriverFactory.getWebDriver(), WEBDRIVER_PAUSE_TIME);

    wait.until(ExpectedConditions.visibilityOf(element));
Run Code Online (Sandbox Code Playgroud)

java selenium

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

单击链接后查找URL

单击元素后,如何使用硒查找当前URL。我有这个网站:http : //www.runningintheusa.com/Classic/View.aspx?RaceID=5622

我有代码(假设所有相关的库都已导入)

def get_detail(x):
    dic = {}
    driver = webdriver.PhantomJS(path)
    driver.get(x)
    driver.find_element_by_id('ctl00_ctl00_MainContent_hypPrimaryURL').click()
    return driver.current_url
print get_detail('http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622')
Run Code Online (Sandbox Code Playgroud)

我运行了代码,它仅返回原始URL,即http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622

单击http://flagstaffbigs.org/dave-mckay-run.htm网站上的“比赛网站”链接后,如何找到网址

python selenium web-scraping

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