我正在尝试自动执行Google搜索,正常的sendkeys可以正常工作,但是当我尝试使用keys.F5或ascii代码进行发送时,刷新不会起作用 当尝试重新定位时,也会出现错误,因为“ WebDriver类型的execute_script(String)方法未定义 “
也尝试过使用F5键代替F5键,但无济于事
` package com.at.sample;
import org.openqa.selenium.Keys;
import java.lang.Thread;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
// import org.openqa.selenium.Alert;
import java.util.List;
public class Refreshgoogle {
public static void main(String[] args) throws InterruptedException {
WebDriver driver;
System.setProperty("webdriver.chrome.driver","c://chromedriver.exe");
driver= new ChromeDriver();
//Launch the Application Under Test (AUT)
driver.get("http://google.com");
Actions action = new Actions(driver);
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("test data");
//sends normal keybaord strokes
// approch 1 driver.findElement(By.xpath("//html")).sendKeys(Keys.F5);
// approch 2.1 WebElement element1 = driver.findElement(By.xpath("//*[@id=\"tsf\"]/div[2]/div[1]/div[2]/div[2]"));
//approch 2.2 element1.sendKeys(Keys.F1);
// approch 3 driver.findElement(By.xpath("//*[@id=\"gsr\"]")).sendKeys(Keys.F5);
// driver.execute_script("location.reload(true);");
System.out.println(driver.getTitle());
// working driver.navigate().to(driver.getCurrentUrl());
}
}
`
有4种方法 前3个不会刷新pagea 在第4次使用时,显示错误为:对于WebDriver类型,方法execute_script(String)未定义
答案 0 :(得分:0)
请参考以下解决方案
driver.navigate.refresh();
如果要使用键刷新页面,则也可以使用Robot类。
Robot robot = new Robot(); // Robot class throws AWT Exception
Thread.sleep(2000); // Thread.sleep throws InterruptedException
robot.keyPress(KeyEvent.VK_CONTROL); // press Control key down key of
robot.keyPress(KeyEvent.VK_F5);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_F5);
Thread.sleep(2000);
这是与硒有关的问题,更多详细信息请参见:https://github.com/webdriverio/webdriverio/issues/1344
答案 1 :(得分:0)
您可以通过以下方式刷新:
1。使用get方法和递归方法
driver.get("https://URL.com");
driver.get(driver.getCurrentURL());
使用导航方法并递归调用您的URL
driver.get("https://URL.com");
driver.navigate.to(driver.getCurrentURL());
使用一个有效的网络元素并发送密钥
driver.get("https://URL.com");
driver. findElement(By.id("username")).sendKeys(Keys.F5);
希望获得帮助。
答案 2 :(得分:0)
WebElement(I)sendKeys()将不接受键(键盘键)。只能使用Actions类来处理。
此外,如果您需要刷新页面,请使用WebDriver()refresh()或使用相同接口的getCurrentUrl()获取当前URL,并使用相同的URL作为参数来导航(
)。以下是每种方法的详细说明: 1)按照'https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html#sendKeys-java.lang.CharSequence...-',WebElement(I)中的sendKeys()仅接受char序列(即字符串)。 //大约1 driver.findElement(By.xpath(“ // html”))返回一个WebElement,此元素sendKeys将仅接受char序列。因此,您的方法r =使用Keys.F5进行刷新在这里行不通。
2)//处理2.1 WebElement element1 = driver.findElement(By.xpath(“ // * [@ id = \” tsf \“] / div [2] / div [1] / div [2] / div [2]“)); //将2.2 element1.sendKeys(Keys.F1); 与方法1相同的解释。
3)//接近3 driver.findElement(By.xpath(“ // * [@ id = \” gsr \“]”))。sendKeys(Keys.F5); 进行了与方法1相同的操作,并在此处进行了说明。
4)如果需要使用javascriptexecutor,首先需要创建如下所示的javascriptexecutor对象,并应使用该对象的引用变量调用execute_script():
JavascriptExecutor js =(JavascriptExecutor)驱动程序;
js.executeScript(Script,Arguments);
如果未创建此对象,则将得到“ WebDriver类型的execute_script(String)未定义”。
因此,您尝试的4种方法将不会刷新页面。 相反,您可以使用以下选项:
1)动作类sendKeys():它将接受键盘键。 2)使用driver.navigate()。refresh(); 3)在为对象创建对象之后使用javascriptexecutor(如方法4中所述)
尝试使用此代码:
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;
public class TestRefresh {
public static void main(String[] args) {
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.google.com");
`// case 1:`
`driver.navigate().to(driver.getCurrentUrl());`
`// case 2:`
`((JavascriptExecutor)driver).executeScript("document.location.reload()");`
`// case 3:`
`driver.navigate().refresh();`
}
}