使用selenium更改语言键入方向

时间:2015-11-26 07:45:08

标签: python selenium selenium-webdriver webdriver

我正在尝试使用selenium Python从右到左更改文本的输入方向。

键盘中的正常键序列是CTRL + SHIFT(右侧)。

我尝试了以下内容:

   from selenium.webdriver.common.keys import Keys
   from selenium.webdriver.support.ui import WebDriverWait
   from selenium.webdriver.support import expected_conditions as EC
   from selenium.webdriver import ActionChains

   def testLangDirChange(self):      
        self.driver.get("http://unixpapa.com/js/testkey.html")
        XPathTB='//textarea[@name="t"]'
        WebDriverWait(self.driver, 15).until(EC.presence_of_element_located((By.XPATH, XPathTB)))
        TB=self.driver.find_element_by_xpath(XPathTB)
        TB.click()
        actionChains=ActionChains(self.driver)
        actionChains.key_down(Keys.CONTROL).key_down(Keys.SHIFT).key_up(Keys.CONTROL).key_up(Keys.SHIFT).perform()

我在测试仪中看到了正确的按键序列,但打字方向没有改变(我仍然从左到右)。

我也尝试过:

firefoxProfile.native_events_enabled = False
firefoxProfile.set_preference("intl.accept_languages", 'he-IL')

但它没有帮助。

(你必须有一个向右的左键盘布局,比如希伯来语才能测试)

更新1

我刚在测试网站上启用了以下复选框:修饰符,DOM 3,旧DOM 3并比较了两个输出。我所看到的是,在selenium中输入的是location = 1,在键盘测试中它是location = 2.

当我执行Keys.SHIFT时,Selenium可能会左键移位(尽管键中的LEFT SHIFT键是单独指定的)?

更新2:

我在模块内找到了selenium.webdriver.common.keys.Keys以下内容:

SHIFT        = '\ue008'
LEFT_SHIFT   = SHIFT

所以他们确实定义相同。如何在那里指定右移?

3 个答案:

答案 0 :(得分:0)

我不确定您的WebDriver可以将命令发送到操作系统级别,我认为它的作用是仅在浏览器中运行。相反,为什么不尝试直接使用sendKeys(otherLang)输入其他语言?

答案 1 :(得分:0)

我最终使用以下方式运行AutoIt脚本:

使用os.system(R ' “C:\路径\ changeLangDir.exe”')

内容:

send("{RCTRL}{RSHIFT}")

另一个解决方案是将dir =“ltr”标签设置为dir =“rtl”

使用:

self.driver.execute_script("arguments[arguments.length-1].dir = 'rtl';", TB)

答案 2 :(得分:0)

经过大量搜索,我找到了更改chromedriver语言和使用python的解决方案。我正在使用linux.this为您工作。

options = Options()
options.binary_location = "/Applications/Google\ 
Chrome.app/Contents/MacOS/Google\ Chrome"

options = Options()
options.add_argument("start-maximized")
prefs = {
"translate_whitelists": {"fr": "en", "de": "en", 'it': 'en', 'no': 'en', 'es': 
'en', 'sv': 'en', 'nl': 'en',
'da': 'en', 'pl': 'en', 'fi': 'en', 'cs': 'en'},
"translate": {"enabled": "true"}
 }
 options.add_experimental_option("prefs", prefs)