小编Pet*_*ček的帖子

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

如何使用Selenium Webdriver在浏览器中单击<input type = file>?

我正在使用Selenium 2 - WebDriver处理文件选择器对话框.信不信由你,我的问题不是处理操作系统原生的文件选择器.那部分我可以处理!

问题是让Selenium正确点击"选择文件"按钮.由于原始源html很简单<input type='file'>,浏览器确定如何将其呈现为字段和按钮.因此,按钮的放置和命名会根据浏览器而改变.我已经在Chrome中使用它,但仅仅是因为Chrome将按钮放在最左边的路线上,而Selenium恰好在默认情况下点击那里.

有任何想法吗?我不清楚这种类型的输入是否真的可以从DOM中导航......

selenium webdriver

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

如何使用selenium删除文本字段中的默认值?

我想删除文本框的默认值以输入新值,但我不知道如何做到这一点.

我当时想用CTRL+ a然后Delete但我不知道怎么做.

我甚至使用了WebDriver的命令driver.findElement("locator").clear();.

selenium automation selenium-rc

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

使用jOOQ从值()中选择插入并使用正确的类型转换

我正在使用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)

java sql postgresql jooq

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

Java - 扩展HashMap - 对象与泛型行为

我正在编写一个HashMap基于简单的Cache,其工作方式如下:

  1. 如果请求key 在缓存中,返回它value.
  2. 如果请求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.我已经阅读了足够的知识,知道它背后有一些理由(我不同意,但这是另一个故事).

我的问题是在注释行,因为它似乎投被选中.由于类型擦除,我无法检查是否 …

java generics inheritance casting

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

BitSet的size()方法的原因是什么?

这个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例如).

java bitset

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

selenium webdriver找到锚标签并单击它

<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)

但它不起作用

java selenium web-scraping web-scripting

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

Selenium Webdriver JQUERY

我是Selenium WebDriver的新手,我正在学习Selenium WebDriver,了解如何使用jQuery选择器来处理元素而不是XPath表达式,ID等...

你能否帮我提供链接,在那里我可以找到有关如何在Selenium WebDriver中使用jQuery的基本信息?

jquery selenium webdriver selenium-webdriver

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

Selenium python find_element_by_class_name()从v 2.2到2.21停止工作 - 不能使用'Compound Class Name'

我正在使用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,以及它们的解决方案是什么?

有人可以帮我找到带有"复合"类名的元素吗?

谢谢.

python selenium webdriver

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

如何在Linux平台上实现chlenium中的chromedriver

有人可以告诉我如何在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 webdriver selenium-webdriver

10
推荐指数
3
解决办法
6万
查看次数