SyntaxError: неверный синтаксис при использовании find_element_by_xpath при использовании Selenium в Python - PullRequest
0 голосов
/ 14 февраля 2019

Испытания кода:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.niftyindices.com/reports/historical-data")
driver.maximize_window()
driver.find_element_by_xpath("//*[@id="ddlHistorical"]").send_keys("NIFTY 100")

Я получаю ошибку:

File "<ipython-input-32-592f058980cd>", line 5
    driver.find_element_by_xpath("//*[@id="ddlHistorical"]").send_keys("NIFTY 100")
                                                       ^
SyntaxError: invalid syntax

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Ключи отправки не могут использоваться в этом случае для выбора значения из выпадающего списка. Я написал фрагмент кода для того же самого.Пожалуйста, попробуйте это.

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class Testing {
	public static WebDriver driver;

	@Test
	public void test() throws InterruptedException {
		System.setProperty("webdriver.chrome.driver", "./Driver/chromedriver");
		driver = new ChromeDriver();
		driver.get("http://www.niftyindices.com/reports/historical-data");
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
		driver.findElement(By.xpath("//*[@id=\"HistoricalData\"]/div[1]/div/div/a")).click();
		Thread.sleep(2000);
		List<WebElement> elements = driver.findElements(By.xpath("//*[@id=\"mCSB_2_container\"]/li"));
		for (WebElement element : elements) {
			String mCSB = element.getText();
			
			if (mCSB.equalsIgnoreCase("NIFTY 100"))
			{
				element.click();
			}
			System.out.println(mCSB);
		}
	}
}

Пожалуйста, проголосуйте и примите ответ, если он вам поможет.

0 голосов
/ 14 февраля 2019

Это сообщение об ошибке ...

SyntaxError: invalid syntax

... означает, что выражение xpath не было допустимым выражение xpath .

Поскольку вы используете двойные кавычки т.е. "..." для xpath , вам необходимо предоставить значения атрибута в пределах singleкавычки то есть '...'.

Поэтому вам нужно изменить:

@id="ddlHistorical"

На:

@id='ddlHistorical'

Эффективно строкакод:

driver.find_element_by_xpath("//*[@id="ddlHistorical"]").send_keys("NIFTY 100")

будет:

driver.find_element_by_xpath("//*[@id='ddlHistorical']").send_keys("NIFTY 100")
...