使用watir-webdriver,如何在点击链接后等待页面加载?
目前我正在做的事情:
sleep n
Run Code Online (Sandbox Code Playgroud)
但这并不理想,因为页面响应变化很大.
是否有方法来测试页面是否准备就绪或页面中是否存在某个元素.我理解在正常的watir gem中有Watir::Waiter.wait_until或类似的东西,但我在webdriver版本中看不到这一点.
我正在使用Python中的Selenium webdriver抓取一个网页
我正在处理的网页上有一个表格.我可以填写表单,然后单击"提交"按钮.
它会生成一个弹出窗口(Javascript Alert).我不确定,如何通过webdriver点击弹出窗口.
知道怎么做吗?
谢谢
我使用Selenium WebDriver.我打开第一页然后打开第二页 - 执行一些操作并返回第一页.在我想要关闭第二页之前,我使用命令driver.close();,但它会关闭第一页而不是第二页.如何使Selenium关闭特定窗口?
部分代码
String HandleBefore = driver.getWindowHandle();
driver.findElement(By.xpath("...")).click();
for (String twohandle : driver.getWindowHandles()) {
driver.switchTo().window(twohandle);
}
driver.findElement(By.linkText("001")).click();
driver.close();
Run Code Online (Sandbox Code Playgroud) 我创建了一个播放器,它将使用selenium和C#中的ChromeDriver自动化chrome.它工作正常.
发布我面临的问题是,当它为ChromDriver创建一个对象时,它将启动ChromeDriver应用程序,该应用程序会弹出,然后Chrome将加载.它非常完美,因为该应用程序正在为我加载chrome.
无论如何,我可以打开隐藏的ChromeDriver吗?
所以有一个很好的长序列表可以传递给chromedriver.
我想特别使用它们中的一些--disable-logging.
我不想(仅)在本地使用chromedriver,但我想编写我要使用的所有代码 webdriver.Remote().
这是我用来设置chrome驱动程序的代码,它适用于vanilla chrome实例.
driver = webdriver.Remote(
command_executor = 'http://127.0.0.1:4444/wd/hub',
desired_capabilities = {
'browserName': 'chrome',
}
)
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何传递其他选项.
当我看到时,driver.capabilities我看到以下内容
{
u'rotatable': False,
u'browserConnectionEnabled': False,
u'acceptSslCerts': False,
u'cssSelectorsEnabled': True,
u'javascriptEnabled': True,
u'nativeEvents': True,
u'databaseEnabled': False,
u'chrome.chromedriverVersion': u'23.0.1240.0',
u'locationContextEnabled': False,
u'takesScreenshot': True,
u'platform': u'MAC',
u'browserName': u'chrome',
u'webdriver.remote.sessionid': u'1352096075502',
u'version': u'22.0.1229.94',
u'applicationCacheEnabled': False,
u'webStorageEnabled': True,
u'handlesAlerts': True,
u'chrome.nativeEvents': False
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何其他参数(除此之外desired_capabilities)将参数传递给chromedriver webdriver.Remote.这是真的?我错过了什么吗?还有其他一些定制chromedriver的策略吗?
在CromeDrive维基页面上有一个很好的例子,它显示了"使用特定标志启动Chromium",但所有示例都是针对webdriver.Chrome(); 这个例子也在java中,所以它甚至可能不适用于python.
如果有人让这个工作或者可以告诉我这不起作用我会很感激.谢谢. …
这是我正在使用的,用户代理可以成功设置,而下载首选项不能.
Windows 7,Chrome 26,Selenium-dotnet-2.31.2,chromedriver_win_26.0.1383.0
ChromeOptions chromeOptions = new ChromeOptions();
var prefs = new Dictionary<string, object> {
{ "download.default_directory", @"C:\code" },
{ "download.prompt_for_download", false }
};
chromeOptions.AddAdditionalCapability("chrome.prefs", prefs);
chromeOptions.AddArgument("--user-agent=" + "some safari agent");
var driver = new ChromeDriver(chromeOptions);
Run Code Online (Sandbox Code Playgroud)
取自chromedriver.log:
[1.201][FINE]: Initializing session with capabilities {
"browserName": "chrome",
"chrome.prefs": {
"download.default_directory": "C:\\code",
"download.prompt_for_download": false
},
"chrome.switches": [ "--user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version..." ],
"chromeOptions": {
"args": [ "--user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version..." …Run Code Online (Sandbox Code Playgroud) 如何在网络驱动程序中设置Firefox版本?我只想用不同版本的Firefox.
喜欢不同的版本19,20,21 ....
请提供一个通用的解决方案,也可以帮助其他浏览器.
我下载了ChromeDriver,默认情况下浏览器语言是英文的,我需要将其更改为西班牙语,我一直无法使用.
public WebDriver getDriver(String locale){
System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
return new ChromeDriver();
}
public void initializeSelenium() throws Exception{
driver = getDriver("en-us")
}
Run Code Online (Sandbox Code Playgroud) 我的屏幕上有很多单选按钮.选择单选按钮时,它具有已检查的属性.未选择单选按钮时,不存在checked属性.我想创建一个方法,如果元素不存在将通过.
我正在使用selenium webdriver和java.我知道我可以通过使用来检索属性getSingleElement(XXX).getAttribute(XXX).我只是不确定如何验证属性不存在,以及测试在不存在时传递(如果确实存在则失败).
选中单选按钮时
<input id="ctl00_cphMainContent_ctl00_iq1_response_0" type="radio" name="ctl00$cphMainContent$ctl00$iq1$response" value="1" checked="checked">
Run Code Online (Sandbox Code Playgroud)
未选中单选按钮时
<input id="ctl00_cphMainContent_ctl00_iq1_response_0" type="radio" name="ctl00$cphMainContent$ctl00$iq1$response" value="1">
Run Code Online (Sandbox Code Playgroud)
我希望在checked属性不存在时传递测试
我正在尝试使用selenium在网页kahoot.it上自动生成大量用户,使它们出现在类的前面,但是,当我尝试访问inputSession项时(我在其中写入要输入的gameID),我收到此错误消息游戏)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://www.kahoot.it")
gameID = driver.find_element_by_id("inputSession")
username = driver.find_element_by_id("username")
gameID.send_keys("53384")
Run Code Online (Sandbox Code Playgroud)
这是错误:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:
{"method":"id","selector":"inputSession"}
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激!:)