2015-12-14 3 views
0

В течение некоторого времени я пытался собирать данные с youtube, используя селен для автоматического запуска видео.XPath to CSS selector на YouTube

Но в Edge возникают некоторые проблемы, поскольку Microsoft не поддерживает Xpath, , поэтому я понимаю, что он поддерживает селектор CSS.

Так что, если кто-то может помочь мне найти как изменить качество по CSS это будет большим, с помощью веб-веб-драйвер Microsoft не поддерживает Python (писал в своей сети, таким образом я использую Java)

я включил код до сих пор и как я это сделал в chrome с Xpath в python.

Вот код в Java:

import java.io.File; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver.Window; 
import org.openqa.selenium.edge.EdgeDriver; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 


public class testEdge { 

    public static void main(String[] args) { 

     File file = new File("C:\\Program Files (x86)\\Microsoft Web Driver\\MicrosoftWebDriver.exe"); 
     System.setProperty("webdriver.edge.driver", file.getAbsolutePath()); 


     DesiredCapabilities capabilities = DesiredCapabilities.edge(); 
     EdgeDriver driver = new EdgeDriver(capabilities); 

     Window window = driver.manage().window(); 
     window.maximize(); 



     driver.get("https://www.youtube.com/watch?v=pRpeEdMmmQ0"); 
     WebDriverWait wait = new WebDriverWait(driver,2); 
     wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-right-controls > button.ytp-button.ytp-settings-button"))); 

     driver.findElementByCssSelector("#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-right-controls > button.ytp-button.ytp-settings-button").click();; 

     // wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#ytp-main-menu-id > div:nth-child(4) > div.ytp-menuitem-label"))); 

     driver.findElement(By.cssSelector("#ytp-main-menu-id > div:nth-child(4) > div.ytp-menuitem-label")).click();; 

     driver.findElement(By.cssSelector(":contains('text')")).click();; 


    // driver.findElement(By.className("ytp-menu-label-secondary")).click(); 

     // #ytp-main-menu-id > div:nth-child(1) 
    } 
} 

Запрос для получения качества в XPath в Python:

driver.find_element_by_xpath("//*[contains(text(),'"+video_quality+"')]").click() 
+0

Это какая кнопка xpath, о которой вы упомянули? –

+0

Качество, вы открываете панель меню проигрывателя и выбираете качество, качество, которое я хочу выбрать с помощью CSS-селектора – Hay

ответ

0

текст атрибут не поддерживается в CSS3 Поэтому не поддерживается также в WebDriver. Помимо этого backtracking также не поддерживается в CSS.

Помимо всех других css-локаторов, можно конвертировать в xpath. Но до сих пор это ручной процесс. Вы можете пройти мимо вашего xpath, для которого вы хотите использовать css-локаторы. Я постараюсь ответить вам