麻烦点击Selenium和Java的按钮

时间:2017-05-05 11:48:46

标签: java selenium xpath

我正在尝试使用selenium按主页上的“查找作业”按钮。我使用了By.id,By.xpath和By.className,但它仍然无法正常工作。我要问的问题有很多类似的问题,但是我已经尝试了它们,它们与我已经完成的工作没有什么不同。我正在使用Opera浏览器(不想使用其他浏览器),如果这很重要且版本是3.4.0。

执行后没有显示错误。

问题是如何在Opera浏览器上使用selenium和java单击按钮?

感谢帮助。

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.opera.OperaDriver;
import org.openqa.selenium.opera.OperaOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
public class SeleniumLearning 
{
    WebDriver driverC;  
    WebDriver driverO;

public static void main(String[] args) throws InterruptedException
{
    SeleniumLearning SL = new SeleniumLearning();
    //SL.invokeOperaBrowser();
    SL.indeedOpera();
    //SL.yahooOpera();
    //SL.duckduckgoOpera();
}
public void indeedOpera() throws InterruptedException
{
    System.setProperty("webdriver.opera.driver", "C:\\Program Files (x86)\\Selenium Stuff\\operadriver_win64\\operadriver.exe");
    driverO = new OperaDriver();
    //driverO.manage().deleteAllCookies();
    driverO.manage().window().maximize();
    driverO.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driverO.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

    driverO.get("http://www.indeed.com");
    driverO.findElement(By.className("input_text")).sendKeys("HR");

    //Trying different methods
    //These don't work individually either
    Thread.sleep(3000);
    driverO.findElement(By.id("fj")).click();
    Thread.sleep(3000);
    driverO.findElement(By.xpath("//*[@id='fj']")).click();
    Thread.sleep(3000);
    driverO.findElement(By.className("inwrapBorderTop")).click();
}
}

2 个答案:

答案 0 :(得分:1)

尝试使用JS代码单击元素,如下所示: driver.get( “http://www.indeed.com”);     driver.findElement(By.className( “INPUT_TEXT”))的SendKeys( “HR”);

了Thread.sleep(1000);

WebElement buttontoclick=driver.findElement(By.id("fj"));

((JavascriptExecutor) driver).executeScript("arguments[0].click();", buttontoclick);

答案 1 :(得分:0)

当我直接查看网站时,我首先手动执行测试。我输入“hr”然后点击按钮。那时,可以通过XPath // * [@ id =“fj”]

访问该按钮

然后我试着再次回去查看按钮的定位器是否仅在有搜索文本时才启用,我立即注意到屏幕布局看起来不再相同。我想如果我清除了我的饼干,但我也注意到,第二次尝试时,它已经在文本框中有我之前的文本,但是按钮的定位器没有显示,只有XPath的划分// * [@ id = “jobsearchform”] / DIV [5] /输入

我不知道这个第二个定位器是否适用于首次加载网页,但它可能适用于任何一种情况。