如何为使用Visual Studio创建的Windows服务创建安装程序?
我正在使用Selenium 2 - WebDriver处理文件选择器对话框.信不信由你,我的问题不是处理操作系统原生的文件选择器.那部分我可以处理!
问题是让Selenium正确点击"选择文件"按钮.由于原始源html很简单<input type='file'>
,浏览器确定如何将其呈现为字段和按钮.因此,按钮的放置和命名会根据浏览器而改变.我已经在Chrome中使用它,但仅仅是因为Chrome将按钮放在最左边的路线上,而Selenium恰好在默认情况下点击那里.
有任何想法吗?我不清楚这种类型的输入是否真的可以从DOM中导航......
我想删除文本框的默认值以输入新值,但我不知道如何做到这一点.
我当时想用CTRL+ a然后Delete但我不知道怎么做.
我甚至使用了WebDriver的命令driver.findElement("locator").clear();
.
我正在使用jOOQ将很多行插入到一个多对多关系的表中.代码工作,生成的SQL是预期的,我的问题是,我希望jOOQ代码可以更简单.
我有一个简化的结构(所有重命名,删除大多数字段,删除大多数约束,它只是一个愚蠢,但准确的结构示例):
CREATE TABLE person (
person_id BIGSERIAL PRIMARY KEY,
person_name VARCHAR(64) NOT NULL UNIQUE
);
CREATE TABLE company (
company_id BIGSERIAL PRIMARY KEY,
company_name VARCHAR(100) NOT NULL UNIQUE
);
CREATE TABLE employment_contract (
company_id BIGINT NOT NULL REFERENCES company,
person_id BIGINT NOT NULL REFERENCES person,
PRIMARY KEY (company_id, person_id),
salary INT NOT NULL,
creation_date_time TIMESTAMP NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我的插入代码:
Table<Record4<String, String, Integer, Timestamp>> insertValues = values(
row(
cast(null, COMPANY.COMPANY_NAME),
cast(null, PERSON.PERSON_NAME),
cast(null, EMPLOYMENT_CONTRACT.SALARY),
cast(null, EMPLOYMENT_CONTRACT.CREATION_DATE_TIME)
)
).as("insert_values",
COMPANY.COMPANY_NAME.getName(), -- …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个HashMap
基于简单的Cache,其工作方式如下:
key
是在缓存中,返回它value
.key
不存在,则运行value
基于生成的方法key
,存储两者,返回value
.代码:
import java.util.HashMap;
abstract class Cache<K, V> extends HashMap<K, V> {
@Override
public V get(Object key) {
if (containsKey(key)) {
return super.get(key);
} else {
V val = getData(key);
put((K)key, val); // this is the line I'm discussing below
return val;
}
}
public abstract V getData(Object key);
}
Run Code Online (Sandbox Code Playgroud)
这很简单,效果很好.但是,我讨厌太阳的决策get()
采取的Object
作为它的参数,而不是K
.我已经阅读了足够的知识,知道它背后有一些理由(我不同意,但这是另一个故事).
我的问题是在注释行,因为它似乎投有被选中.由于类型擦除,我无法检查是否 …
这个size()
方法有没有用例java.util.BitSet
?
我的意思是 - JavaDoc明确表示它依赖于实现,它long[]
以位为单位返回内部存储的大小.从它所说的,可以得出结论,你将无法设置一个索引高于size()
,但不是这样,BitSet
可以自动增长:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.size()); // prints "64"
myBitSet.set(768);
System.out.println(myBitSet.size()); // prints "832"
Run Code Online (Sandbox Code Playgroud)
在BitSet
我生命中遇到的每一次遭遇中,我一直想使用,length()
因为那个回归的逻辑大小BitSet
:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.length()); // prints "0"
myBitSet.set(768);
System.out.println(myBitSet.length()); // prints "769"
Run Code Online (Sandbox Code Playgroud)
即使我在过去的6年里一直在编写Java,但这两种方法对我来说总是很困惑.我经常混合起来,并顺便用错了,因为在我的头上,我觉得BitSet
作为一个聪明的Set<boolean>
,我会用size()
.
这就像如果ArrayList
已经length()
返回元件的数量和size()
返回底层数组的大小.
现在,size()
我缺少哪种方法的用例?它有用吗?有没有人用它做任何事情?对于某些手动钻头或类似的东西来说,这可能很重要吗?
编辑(经过一些更多的研究)
我意识到BitSet
是在Java 1.0中引入的,而我们使用的大多数类的Collections框架都是在Java 1.2中引入的.所以基本上在我看来,size()
由于遗留原因而保留,并且没有真正的用途.新的Collection类没有这样的方法,而一些旧的(Vector
例如).
<div id="ContentPrimary">
<ul class="selectors modeSelectors">
<li><a href="/content/l411846326l1213g/references/" title="">
<span class="selector">References (27)</span></a></li>
<li><a href="/content/l411846326l1213g/referrers/" title="">
<span class="selector">Cited By (2)</span></a></li>
<li><a href="/content/l411846326l1213g/export-citation/" title="">
<span class="selector">Export Citation</span></a></li>
<li><a href="/content/l411846326l1213g/about/" title="">
<span class="selector">About</span></a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
在这里我需要找到并使用Selenium api 点击关于链接,但我无法做到.
我做的是
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver webDriver) {
System.out.println("Searching ...");
String s = driver.findElement(By.cssSelector("#ContentPrimary ul li[4] span.selector")).getText();
System.out.println(s);
if (Pattern.compile(Pattern.quote("About"), Pattern.CASE_INSENSITIVE).matcher(s).find()) {
return true;
} else {
return false;
}
}
});
driver.findElement(By.linkText("About")).click();
Run Code Online (Sandbox Code Playgroud)
但它不起作用
我是Selenium WebDriver的新手,我正在学习Selenium WebDriver,了解如何使用jQuery选择器来处理元素而不是XPath表达式,ID等...
你能否帮我提供链接,在那里我可以找到有关如何在Selenium WebDriver中使用jQuery的基本信息?
我正在使用Selenium的python库从Firefox中的html页面中抓取数据.
我不得不从Selenium 2.0更新到2.21因为服务器已经更新了Firefox.
在v 2.21中,调用find_element_by_class_name("grid-cell-inner grid-col-name")
失败:
selenium.common.exceptions.WebDriverException: Message: u'Compound class names not permitted'
Run Code Online (Sandbox Code Playgroud)
我尝试访问的元素的类名是 grid-cell-inner grid-col-name
调用find_element_by_class_name()
工作在v 2.2,所以逻辑是正确的,并且以前找到的数据没问题.第2.21节中有些变化.
所有Selenium示例都给出了类名foo
等的简单示例,而没有我需要访问的名称类型.
为什么Selenium停止支持查找类似名称的类grid-cell inner grid-col-name
,以及它们的解决方案是什么?
有人可以帮我找到带有"复合"类名的元素吗?
谢谢.
有人可以告诉我如何在Selenium for Linux平台上使用Chrome驱动程序吗?
我有我的镀铬驱动程序位置username/home/chromedriver
.
我的代码是:
System.setProperty("webdriver.chrome.driver", "/home/username/ChromeDriver/chrome??driver");
driver = new ChromeDriver();
driver.get("facebook.com");
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
org.openqa.selenium.WebDriverException
:无法启动或连接到Chrome.请检查ChromeDriver是否是最新的.使用Chrome二进制文件:
/opt/google/chrome/google-chrome
(警告:服务器未提供任何堆栈跟踪信息)
selenium ×6
java ×4
webdriver ×4
.net ×1
automation ×1
bitset ×1
c# ×1
casting ×1
generics ×1
inheritance ×1
jooq ×1
jquery ×1
postgresql ×1
python ×1
selenium-rc ×1
sql ×1
web-scraping ×1