标签: webdriverwait

用显式等待替换隐式等待(selenium webdriver & java)

如何用显式等待替换这种隐式等待?

驱动程序 = 新的 ChromeDriver(功能);

driver.manage().deleteAllCookies();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

这在 Before 方法中使用。我能够替换代码中的所有 Thread.sleep(),但我不确定对这个做了什么。

java selenium selenium-webdriver webdriverwait implicitwait

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

使用Selenium Webdriver和Python获取完全呈现的HTML

我正在尝试使用Selenium webdriver在Python中构建一个web爬虫,但是当我从webdriver检索网站源代码时,无法访问所需的信息。

我认为问题在于,一旦最初从服务器下载了页面,就会通过JavaScript将内容添加到页面。运行时browser.page_source,在添加此内容之前,我先获取页面的源代码。我想知道添加JavaScript加载的内容后是否可以获得页面的源代码(换句话说,当我使用Inspect Element查看页面时看到的内容)。

这是我正在使用的基本Python脚本:

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.opportunities.auckland.ac.nz")
print(browser.page_source)
Run Code Online (Sandbox Code Playgroud)

当我运行上面的脚本时,我获得了在浏览器中查看页面源代码时看到的页面源代码(即,当使用inspect元素查看代码时,看不到其他内容)。

我尝试过的事情

  • time.sleep(10)在我访问源代码时,如果页面没有完全加载,请在各个位置添加。
  • get_attribute("innerHTML")在身体上使用。
  • 使用execute_script()让JS运行。
  • 使用execute_script()来使JS脚本一个接一个地运行。

如果有人可以首先告诉我这是否可行,以及是否将我指出正确的方向,那将是很好的。谢谢。

更新1

尝试Piotrek的解决方案时,我得到以下输出:

Warning (from warnings module):
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/phantomjs/webdriver.py", line 49
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '
UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
<html><head></head><body></body></html>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎行不通。

javascript python iframe selenium webdriverwait

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

Robot Framework:等到元素可见与元素应该可见,哪个更好用?

我知道它们都可以用来验证一个元素是否出现在页面上,但我想知道每个元素的性能影响和可读性影响。所以我的问题是,假设您有 20 个元素要检查页面,

  1. 对所有 20 个元素使用“等待元素可见”是否更好?

或者

  1. 对一个元素(例如,标题文本)使用Wait until Element Is Visible让我的自动化脚本知道页面已加载,然后对其余元素(例如表单字段)使用Element Should Be Visible

selenium robotframework selenium-webdriver selenium2library webdriverwait

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

如何使用 Selenium 和 Java 通过 PageFactory 等待元素不可见

有没有办法使用 PageFactory 注释等待 Selenium 中不存在的元素?

使用时:

@FindBy(css= '#loading-content')
WebElement pleaseWait;
Run Code Online (Sandbox Code Playgroud)

定位元素,然后:

wait.until(ExpectedConditions.invisibilityOfElementLocated(pleaseWait));
Run Code Online (Sandbox Code Playgroud)

我会得到:

org.opeqa.selenium.WebElement cannot be converted to org.openqa.selenium.By
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法完成我需要的操作:

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector('loading-content')));
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够使用 PageFactory 注释以保持框架一致。有没有办法做到这一点?

java selenium pageobjects page-factory webdriverwait

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

如何使用 Selenium 和 Python 更改输入字段值

我正在尝试更改表单输入中的输入字段值,但无法这样做。

输入值位于此URL

Email: Vela.admi@gmail.com PW: Testing@123

在这些操作之后页面上会出现表单:

1. on left side click on "Sell Order" red button in Dashboard widget
2. a popup will appear on click, select "Order Type" as "Limit"
3. a new formfield appears, named "Limit Price" 

Run Code Online (Sandbox Code Playgroud)

必填项目 当我尝试使用 selenium 或 JS 更改它时,当我们按“发送订单”提交表单时,它似乎没有更改

我的代码路径是:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time

driver.get(url)
driver.find_element_by_css_selector('#gwt-uid-770 > span > span > input').send_keys('6700')

Run Code Online (Sandbox Code Playgroud)

我也试过

driver.execute_script("document.querySelector('#gwt-uid-770 > span > span > …
Run Code Online (Sandbox Code Playgroud)

javascript selenium selenium-chromedriver selenium-webdriver webdriverwait

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

在 Selenium Java 中查找元素的 Xpath

我试图用这个 XPATH 在 selenium 中找到一个元素。我在 Firefox 网络浏览器中得到了这个。

/html/body/div[5]/div[2]/div[9]/div[1]/div[2]/div/div[2]/div[2]/div/div/div[1]/div[2]/div[1]/a
Run Code Online (Sandbox Code Playgroud)

HTML代码 在此处输入图片说明

<a href="/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=&amp;cad=rja&amp;uact=8&amp;ved=2ahUKEwiw7cbBv6LqAhVMAHIKHbbFCUYQFjAAegQIBxAB&amp;url=https%3A%2F%2Fwww.google.com%2Fgmail%2F&amp;usg=AOvVaw3mZ_qbD_gQyp_sqkjrwStn" onmousedown="return rwt(this,'','','','','AOvVaw3mZ_qbD_gQyp_sqkjrwStn','','2ahUKEwiw7cbBv6LqAhVMAHIKHbbFCUYQFjAAegQIBxAB','','',event)" data-ctbtn="2" data-cthref="/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=&amp;cad=rja&amp;uact=8&amp;ved=2ahUKEwiw7cbBv6LqAhVMAHIKHbbFCUYQFjAAegQIBxAB&amp;url=https%3A%2F%2Fwww.google.com%2Fgmail%2F&amp;usg=AOvVaw3mZ_qbD_gQyp_sqkjrwStn"><br><h3 class="LC20lb DKV0Md">Gmail by Google</h3><div class="TbwUpd NJjxre"><cite class="iUh30 bc tjvcx">www.google.com<span class="eipWBe"> › gmail</span></cite></div></a>
Run Code Online (Sandbox Code Playgroud)

我的硒代码

driver.findElement(By.xpath("/html/body/div[5]/div[2]/div[9]/div[1]/div[2]/div/div[2]/div[2]/div/div/div[1]/div[2]/div[1]/a")).click();
driver.findElement(By.linkText("Sign in")).click();
Run Code Online (Sandbox Code Playgroud)

但它不起作用。帮我。

java selenium xpath css-selectors webdriverwait

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

Selenium Web驱动程序等待很长时间

我可以在很长一段时间内使用Selenium Web Driver吗?

即使我可以像下面那样设置隐式等待命令,它也不会等到我给出的时间.

 driver.manage().timeouts().implicitlyWait(5, TimeUnit.MINUTES);
Run Code Online (Sandbox Code Playgroud)

这里有什么不对吗?

在我的情况下,我需要执行一个测试用例并等待4分钟,然后执行下一个测试用例.

我在这里使用Java.

selenium qa webdriver selenium-webdriver webdriverwait

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

Selenium:硒如何识别可见或不可见的元素?是否有可能它已加载到 DOM 中但未渲染到 UI 上?

  1. Selenium:硒如何识别可见或不可见的元素?是否有可能它已加载到 DOM 中但未渲染到 UI 上?我想验证元素可点击的场景,我知道网络驱动器有方法“ElementToBeClickable”,但是,我想知道内部工作原理。请帮我解决这个问题。
  2. 另外,如何处理元素已加载到 DOM 中但 UI 显示正在加载的情况,如何等待完全加载?
  3. 请告诉我,如果UI未加载,那么selenium会直接调用DOM元素,或者如果UI元素正在加载,那么它将执行失败?我真的很感激对此的更多技术解释。

selenium dom selenium-webdriver webdriverwait expected-condition

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

Python - 无法使用 selenium chromewebdriver 下载文件 - “失败 - 下载错误”

我试图使用 selenium 从 google chrome 下载文件。我下面使用的代码运行良好。但不知怎的,它不再起作用了。有任何想法吗?

import os.path
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import Select

RAWDATA_URL = 'https://oui.doleta.gov/unemploy/DataDownloads.asp'
options = webdriver.ChromeOptions() 
prefs = {'download.default_directory' : SAVE_PATH, "download.prompt_for_download": False}
options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(executable_path = DRIVE_PATH, chrome_options = options)


driver.get(RAWDATA_URL)
time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

下面的 xpath 只是从 HTML 复制,所以应该是正确的

driver.find_element_by_xpath("//*[@id='main']/table[38]/tbody/tr[2]/td[5]/a").click()
Run Code Online (Sandbox Code Playgroud)

我也尝试了get方法:

driver.get("https://oui.doleta.gov/unemploy/csv/ar9047.csv")
Run Code Online (Sandbox Code Playgroud)

我预计 csv 文件可以成功下载。但谷歌浏览器只是告诉我“失败-下载错误”。

更新:上面的问题被我简化了。我的项目实际上有两个步骤。首先从一个站点下载数据,然后导航到另一个站点下载 csv 数据。

import datetime
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from …
Run Code Online (Sandbox Code Playgroud)

python selenium xpath selenium-webdriver webdriverwait

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

如何使用 Selenium 单击按钮

我正在尝试使用 python 中的 Selenium 单击网站上的按钮,并且单击按钮工作正常,我可以看到按钮被单击,但代码此时停止运行,当我在普通浏览器中检查网站时,我可以告诉按钮还没有被点击。更具体地说,我试图单击服务器start的按钮aternos.org,并且单击效果很好,但由于某种原因,服务器的实际启动并未完成。

我的开始按钮点击代码:

start = driver.find_element(By.ID, 'start')
status = driver.find_element(By.CLASS_NAME, 'statuslabel-label').text
print(status)
if status == 'Offline':
    start.click()
    print('Starting server!')
Run Code Online (Sandbox Code Playgroud)

python selenium xpath css-selectors webdriverwait

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