java selenium xpath相对
我必须写一个程序,在Allegro上搜索轻型无人机。(使用XPath-relative) 使用Selenium Webdriver,在浏览器中打开Allegro门户,然后将产品类别切换到Electronics,并在搜索字段中输入“Mavic mini” 我正在使用Java和IntelliJ来实现这一点,当我进入网站时,我点击警报,使其关闭,并将“Elektronika”放入类别字段。我无法编写应该键入“mavic mini”的那部分代码,下面是它的样子java selenium xpath相对,java,selenium,xpath,Java,Selenium,Xpath,我必须写一个程序,在Allegro上搜索轻型无人机。(使用XPath-relative) 使用Selenium Webdriver,在浏览器中打开Allegro门户,然后将产品类别切换到Electronics,并在搜索字段中输入“Mavic mini” 我正在使用Java和IntelliJ来实现这一点,当我进入网站时,我点击警报,使其关闭,并将“Elektronika”放入类别字段。我无法编写应该键入“mavic mini”的那部分代码,下面是它的样子 import org.openqa
import org.openqa.selenium.Alert;
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.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class AllegroTestingApp {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "c:\\selenium-drivers\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.allegro.pl");
WebElement categoryCombo = driver.findElement(By.xpath("//div//div//select"));
Select categorySelect = new Select(categoryCombo);
categorySelect.selectByIndex(3);
driver.manage().window().maximize();
driver.findElement(By.xpath("/html/body/div[2]
/div[8]/div/div[2]/div/div[2]/button[2]")).click();
Alert simpleAlert = driver.switchTo().alert();
simpleAlert.accept();
WebElement inputField =
driver.findElement(By.xpath("//INPUT[@type='search']/self::INPUT"));
inputField.sendKeys("mavic mini");
inputField.submit();
}
请帮忙 一些反馈项目:
类别Combo
的定位器非常广泛/通用,如果可能,应该更加具体。始终查找页面上唯一的ID、名称或其他属性。在这种情况下,它有一个唯一的aria标签
,我们可以使用它通过.cssSelector(“select[aria label='Kategoria i opcje wyszukiwana'])创建一个唯一的定位器
Select.selectByVisibleText()
By.cssSelector(“输入[name='string'])
SelectCategory()
,它接受类别名称并对其进行设置。我还创建了Search()
,它接收类别名称和搜索字符串并执行完整的搜索。您可以在下面的代码中看到它们
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class AllegroTestingApp
{
static WebDriver driver;
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver", "c:\\selenium-drivers\\chrome\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
String url = "https://www.allegro.pl";
driver.get(url);
// wait for popup and close
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("img[alt='zamknij']"))).click();
Search("Elektronika", "mavic mini");
driver.quit();
}
public static void Search(String categoryName, String searchString)
{
SelectCategory(categoryName);
WebElement searchBox = driver.findElement(By.cssSelector("input[name='string']"));
searchBox.sendKeys(searchString);
searchBox.submit();
}
public static void SelectCategory(String categoryName)
{
By categoryDropdownLocator = By.cssSelector("select[aria-label='Kategoria i opcje wyszukiwania']");
new Select(driver.findElement(categoryDropdownLocator)).selectByVisibleText(categoryName);
}
}
我看到给出的代码是通过在下面几行注释来工作的。在那个页面上似乎不再有警报了
Alert simpleAlert = driver.switchTo().alert();
simpleAlert.accept();
请尝试以下代码,它将起作用:
driver.get("https://www.allegro.pl");
WebElement categoryCombo = driver.findElement(By.xpath("//div//div//select"));
Select categorySelect = new Select(categoryCombo);
categorySelect.selectByIndex(3);
driver.manage().window().maximize();
driver.findElement(By.xpath("/html/body/div[2]/div[8]/div/div[2]/div/div[2]/button[2]")).click();
WebElement inputField =driver.findElement(By.xpath("//input[@name='string']"));
inputField.sendKeys("mavic mini");
inputField.submit();
请从该部分代码的目标网站添加html代码
By.xpath(“//INPUT[@type='search']/self::INPUT”)
它不起作用。请花一分钟来正确格式化所有代码。现在,它都列为一个报价,然后一些代码被标记为代码,而其他代码则不是。缩进不一致,所有多余的空行使其更难阅读。