如何选择Tweet按钮Selenium Webdriver

时间:2014-11-30 12:08:11

标签: java selenium selenium-webdriver

我只是刷新了我的WebDriver技能,并且正在尝试使用Java自动发送推文。我可以登录并点击“推文”。选择此项后,会弹出一个模态对话框。推文按钮被禁用,直到在框中键入至少1个字符,然后启用:

<button class="btn primary-btn tweet-action tweet-btn js-tweet-btn" type="button">

但我似乎无法用任何选择器选择它。我想我需要以某种方式将驱动程序控制切换到模态对话框,但不知道如何。它不在一个框架内。

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

功能模式对话框用于处理模态类型Windows。 当我们使用此函数打开一个窗口时,Java脚本执行会暂停,直到窗口关闭。 这里父窗口期望从弹出窗口返回一些值。 所以Selenium Web驱动程序中的问题是,当我们打开一个Modal窗口时,父窗口的可访问性就被阻止了。

带有模态对话框的Selenium中的

问题: Selenium使用Java脚本。当调用show Modal对话框时,Javascript将从父级挂起。 其句柄仍然指向主窗口的Selenium被暂停。 因此,之后的所有连续命令都会被暂停。

如何处理Selenium Web驱动程序中的模态对话框。 先决条件:我相信当打开模态对话框时,光标位于模态对话框上。 在这种情况下,我们可以使用Robot类处理模态对话框上的操作。

执行打开模态对话框的操作后,请尝试以下方法

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);
    StringSelection data_to_enter= new StringSelection("Data to Enter");
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(data_to_enter, null); 
    Thread.sleep(7000);  
    robot.keyPress(KeyEvent.VK_CONTROL); 
    robot.keyPress(KeyEvent.VK_V); 
    robot.keyRelease(KeyEvent.VK_V); 
    robot.keyRelease(KeyEvent.VK_CONTROL); 
    robot.keyPress(KeyEvent.VK_ENTER); 
    robot.keyRelease(KeyEvent.VK_ENTER);

答案 1 :(得分:0)

在您选择了global-tweet-box并发送了相应的密钥之后,请执行此操作,因为Twitter有一项功能,即按下CTRL + RETURN(或ENTER)将在模式框打开并填充后实际触发推文带文字:

String selectAll = Keys.chord(Keys.CONTROL, Keys.RETURN);
driver.findElement(By.id("tweet-box-global")).sendKeys(selectAll);

完整代码应如下所示:

driver.findElement(By.id("global-new-tweet-button")).click();
driver.findElement(By.id("tweet-box-global")).click();
String keys = "This is my first automated tweet.";
driver.findElement(By.id("tweet-box-global")).sendKeys(keys);

String selectAll = Keys.chord(Keys.CONTROL, Keys.RETURN);
driver.findElement(By.id("tweet-box-global")).sendKeys(selectAll);

答案 2 :(得分:-1)

尝试以下代码。有用。 (假设您已经编码了点击按钮的部分,该按钮打开了推文对话框)并且,对于记录,对话框仅在顶部窗口内。没有框架。

//For adding content in the message box, i.e, "Hello"
driver.findElement(By.id("tweet-box-global")).sendKeys("Hello");

//Clicking on the Tweet button
driver.findElement(By.xpath("//form[@class='t1-form tweet-form']//div[@class='tweet-button']/button")).click();

答案 3 :(得分:-1)

在文本字段中输入一些文本后,将启用Tweet按钮,您可以使用以下按钮点击它:

driver.findElement(By.cssSelector(".btn.primary-btn.tweet-action.tweet-btn.js-tweet-btn")).click();