当前位置: 首页 > 知识库问答 >
问题:

Selenium找不到css/clasname选择器

方楷
2023-03-14

我正在为一个网站编写一个小的测试脚本,作为测试的一部分,程序需要点击Buttons。我正在使用谷歌chrome驱动程序,我尝试了一些功能,例如:driver。findElement(由.cssSelector()驱动)。但是由于某种原因,程序无法识别定位器。

在图片中,我选择了一个按钮来获取其id或类(很抱歉,该网站是希伯来语的)。

主RunnerClass

 package runners;

 import org.junit.runner.RunWith;

 import cucumber.api.CucumberOptions;
 import cucumber.api.junit.Cucumber;

 @RunWith(Cucumber.class)

 @CucumberOptions(features = { "src/test/java/featurefiles/" }, glue = {
    "stepDefinitions" }, monochrome = true, tags = {}, 
            plugin = { "pretty", "html:target/cucumber", 
 "json:target/cucumber.json",

 "com.cucumber.listener.ExtentCucumberFormatter:output/report.html" })

  public class MainRunner {

}

步骤定义

package stepDefinitions;

import java.io.IOException;
import java.nio.file.Paths;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;



 public class consumeSteps {

WebDriver driver;

@Before
public void setup() throws IOException {
    System.setProperty("webdriver.chrome.driver", 
 Paths.get(System.getProperty("user.dir")).toRealPath() +  
 "\\src\\test\\java\\drivers\\chromedriver.exe");
    this.driver = new ChromeDriver();
    this.driver.manage().window().maximize();
    this.driver.manage().timeouts().pageLoadTimeout(120, 
 TimeUnit.SECONDS);
}


@After() 
public void tearDown() {
    this.driver.manage().deleteAllCookies();
    this.driver.quit();
}


@Given("^I access pizzahut\\.co\\.il$")
public void i_access_pizzahut_co_il() throws Throwable {
    driver.get("https://pizzahut.co.il/");

}

@When("^I click on sales section button$")
public void i_click_on_sales_section_button() throws Throwable {
  driver.findElement(By.cssSelector("btn-default btn-block ng-binding ng- 
  isolate-scope")).click();

}

@When("^I click on add family non gluten pizza button$")
public void i_click_on_add_family_non_gluten_pizza_button() throws 
 Throwable {


}

@When("^I click on add button$")
public void i_click_on_add_button() throws Throwable {
    // Write code here that turns the phrase above into concrete 
 actions

}

@When("^I click on chosen extra$")
public void i_click_on_chosen_extra() throws Throwable {
    // Write code here that turns the phrase above into concrete 
 actions

}

@When("^I click on extra for the whole pizza$")
public void i_click_on_extra_for_the_whole_pizza() throws Throwable {
    // Write code here that turns the phrase above into concrete 
 actions

}

@When("^I click on choose and next button$")
public void i_click_on_choose_and_next_button() throws Throwable {
    // Write code here that turns the phrase above into concrete 
 actions

}

@When("^I click on continue for payment allert button$")
public void i_click_on_continue_for_payment_allert_button() throws 
 Throwable {
    // Write code here that turns the phrase above into concrete 
 actions

}

@When("^I click on continue for payment button$")
public void i_click_on_continue_for_payment_button() throws Throwable {
    // Write code here that turns the phrase above into concrete 
 actions

}

@Then("^I should successfully be moved to the payment form$")
public void i_should_successfully_be_moved_to_the_payment_form() throws 
 Throwable {
    // Write code here that turns the phrase above into concrete 
 actions

}



 }

功能文件

 Feature: consume product through sales section.

 Scenario: payment form will display after assembling a product.


Given I access pizzahut.co.il
When I click on sales section button
And I click on add family non gluten pizza button 
And I click on add button 
And I click on chosen extra
And I click on extra for the whole pizza
And I click on choose and next button
And I click on continue for payment allert button
And I click on continue for payment button 
Then I should successfully be moved to the payment form

共有2个答案

农建弼
2023-03-14

希望这能管用

//div[@class='home-page-actions_promotion-btn']//a
景俊语
2023-03-14

请尝试以下内容:

driver.findElement(By.xpath("//*[text()=\"לכל המבצעים\"]")).click();
 类似资料:
  • 问题内容: 问题: 无法从CSS选择器特定元素中选择。需要验证注册用户是否可以成功更改其密码。我试过了类的不同属性来调用它。当尝试前两个示例时,结果是方法中的异常错误。最后的尝试将调用第一个类实例并重置密码字段(失败)。 尝试过: 目的: 我需要选择共享同一班级的项目。如下所示,该类是共享的。 问题答案: 编辑:因为选择器需要一个,或,但是它们本身都不是。 提供要匹配的类名,并从那里指定要选择的特

  • 我是新的Selenium C#自动化。试图在网上找到,但没有得到任何帮助。html代码看起来像这样。我需要找到元素,然后使用CSS单击它。该网站只在IE上运行。

  • 问题内容: 我在selenium测试中有以下xpath语句: 它达到了我想要的,但是我的测试在IE6中非常缓慢。有人知道我将如何做与CSS选择器相同的选择器吗?我想我了解如何执行上述操作,但text()=“ IPODate”部分除外。 以下是我要从中选择的表格示例: ....很多很多行 …还有很多行… 在此示例中,只有一行具有IPODate单元。 问题答案: CSS定位器用于其中包含文本IPODa

  • 问题内容: 是否有某种“非” CSS选择器? 例如,当我在CSS中编写以下行时,带有类 classname 的标记内的所有输入字段将具有红色背景。 如何选择 类 名为class的标签之外的所有输入字段? 问题答案: 使用当前的浏览器CSS支持,您将无法。 _较新的浏览器现在支持它- (有关CSS中的替代方法,请参见其他答案。) 如果可以在JavaScript / jQuery中执行此操作,则可以执

  • HTML格式 我没有这个的id或名称。因此我写 但click()没有发生。 已尝试driver . find element(by . CSS selector("。按钮[值=搜索]”)。单击(); 尝试值='Search '(单引号)。 这些选择器正在

  • 我正在编写一个可重用的代码来寻找自动化测试的元素。在上面的代码中,可以通过两种方式找到元素,我可以根据或通过文本查找它;但是我在硒中找不到任何东西,我可以用我想要的方式找到元素。 我正在使用“find_element”来查找元素,但是没有任何东西可以传递或作为论据。 我尝试了-或 无论如何,我可以在webview上找到使用Selenium驱动程序和一些文本作为其论据的元素吗??