gpt4 book ai didi

ruby - Selenium-Webdriver Ruby --> 点击后如何等待图片加载完毕

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:22 28 4
gpt4 key购买 nike

我是 Ruby 和 Selenium-Webdriver 的新手,所以请帮忙 :)

我正在尝试打开电子邮件事件,发送到我的收件箱,其中包含图像并在 firefox 中截取屏幕截图。但我不能让它等到图像完全加载。一旦我点击“显示图像”,屏幕截图已经被截取,但当时没有加载图像。在显示所有图像后,我如何暂停脚本并稍后截取屏幕截图?

请帮忙:(

下面是我的脚本:

enter code here

require 'selenium-webdriver'

browser = Selenium::WebDriver.for :firefox

#==========================================================================================

wait = browser.manage.timeouts.implicit_wait = 15
#==========================================================================================
url = 'https://login.yahoo.com/config/login_verify2?.intl=us&.src=ym'
# Open browser (firefox)
browser.navigate.to url
browser.find_element(:id, 'username').send_keys "some yahoo id"
browser.find_element(:id, 'passwd').send_key "some password"
browser.find_element(:id, ".save").click
browser.find_element(:id, "inbox-label").click
browser.find_element(:xpath, "//div[@class='subj']").click
browser.find_element(:xpath, "//a[@title='Display blocked images']").click

result_page_title = browser.find_element(:tag_name, 'title')
puts "Title of the page: \t\t: #{result_page_title.text}"
browser.save_screenshot "1.jpg"

最佳答案

您可以使用隐式等待和显式等待 来等待特定的 Web 元素,直到它出现在页面中。您可以定义的等待时间取决于应用程序。

显式等待:

显式等待是您定义的代码,用于等待特定条件发生,然后再继续执行代码。如果满足条件,它将终止等待并继续执行进一步的步骤。

代码:

 WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(strEdit)));

或者

 WebElement myDynamicElement = (new WebDriverWait(driver, 30))
.until(new ExpectedCondition<WebElement>(){
@Override
public WebElement apply(WebDriver d) {
return d.findElement(By.id("myDynamicElement"));
}});

在抛出 TimeoutException 之前最多等待 30 秒,或者如果它找到该元素,将在 0 - 30 秒内返回它。默认情况下,WebDriverWait 每 500 毫秒调用一次 ExpectedCondition,直到它成功返回。一个成功的返回是对于 ExpectedCondition 类型是 Boolean return true or not null 对于所有其他 ExpectedCondition 类型返回值。

您可以根据应用程序的需要使用 ExpectedConditions 类。

隐式等待:

隐式等待是告诉 WebDriver 在尝试查找一个或多个元素(如果它们不是立即可用的)时轮询 DOM 一段时间

代码:

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

要记住的一件事是,一旦设置了隐式等待 - 它将在 WebDriver 对象实例的生命周期内保持不变

有关更多信息,请使用此链接 http://seleniumhq.org/docs/04_webdriver_advanced.jsp

以上代码使用Java。根据您的语言需要进行更改。

关于ruby - Selenium-Webdriver Ruby --> 点击后如何等待图片加载完毕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14700123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com